draft-ietf-netmod-module-tags-04.txt | draft-ietf-netmod-module-tags-05.txt | |||
---|---|---|---|---|
Network Working Group C. Hopps | Network Working Group C. Hopps | |||
Internet-Draft L. Berger | Internet-Draft L. Berger | |||
Updates: RFC8407 (if approved) LabN Consulting, L.L.C. | Updates: RFC8407 (if approved) LabN Consulting, L.L.C. | |||
Intended status: Standards Track D. Bogdanovic | Intended status: Standards Track D. Bogdanovic | |||
Expires: August 2, 2019 Volta Networks | Expires: August 19, 2019 Volta Networks | |||
January 29, 2019 | February 15, 2019 | |||
YANG Module Tags | YANG Module Tags | |||
draft-ietf-netmod-module-tags-04 | draft-ietf-netmod-module-tags-05 | |||
Abstract | Abstract | |||
This document provides for the association of tags with YANG modules. | This document provides for the association of tags with YANG modules. | |||
The expectation is for such tags to be used to help classify and | The expectation is for such tags to be used to help classify and | |||
organize modules. A method for defining, reading and writing a | organize modules. A method for defining, reading and writing a | |||
modules tags is provided. Tags may be standardized and assigned | modules tags is provided. Tags may be standardized and assigned | |||
during module definition; assigned by implementations; or dynamically | during module definition; assigned by implementations; or dynamically | |||
defined and set by users. This document provides guidance to future | defined and set by users. This document provides guidance to future | |||
model writers and, as such, this document updates [RFC8407]. | model writers and, as such, this document updates [RFC8407]. | |||
skipping to change at page 1, line 38 ¶ | skipping to change at page 1, line 38 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on August 2, 2019. | This Internet-Draft will expire on August 19, 2019. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1. Some possible use cases of YANG module tags . . . . . . . 3 | 1.1. Some possible use cases of YANG module tags . . . . . . . 3 | |||
2. Conventions Used in This Document . . . . . . . . . . . . . . 3 | 2. Conventions Used in This Document . . . . . . . . . . . . . . 4 | |||
3. Tag Values . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Tag Values . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.1. IETF Standard Tags . . . . . . . . . . . . . . . . . . . 4 | 3.1. IETF Standard Tags . . . . . . . . . . . . . . . . . . . 4 | |||
3.2. Vendor Tags . . . . . . . . . . . . . . . . . . . . . . . 4 | 3.2. Vendor Tags . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.3. User Tags . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3.3. User Tags . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.4. Reserved Tags . . . . . . . . . . . . . . . . . . . . . . 4 | 3.4. Reserved Tags . . . . . . . . . . . . . . . . . . . . . . 4 | |||
4. Tag Management . . . . . . . . . . . . . . . . . . . . . . . 4 | 4. Tag Management . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
4.1. Module Definition Association . . . . . . . . . . . . . . 5 | 4.1. Module Definition Association . . . . . . . . . . . . . . 5 | |||
4.2. Implementation Association . . . . . . . . . . . . . . . 5 | 4.2. Implementation Association . . . . . . . . . . . . . . . 5 | |||
4.3. Administrative Tagging . . . . . . . . . . . . . . . . . 5 | 4.3. Administrative Tagging . . . . . . . . . . . . . . . . . 5 | |||
5. Tags Module Structure . . . . . . . . . . . . . . . . . . . . 5 | 5. Tags Module Structure . . . . . . . . . . . . . . . . . . . . 5 | |||
5.1. Tags Module Tree . . . . . . . . . . . . . . . . . . . . 5 | 5.1. Tags Module Tree . . . . . . . . . . . . . . . . . . . . 5 | |||
5.2. Tags Module . . . . . . . . . . . . . . . . . . . . . . . 5 | 5.2. Tags Module . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
6. Other Classifications . . . . . . . . . . . . . . . . . . . . 8 | 6. Other Classifications . . . . . . . . . . . . . . . . . . . . 8 | |||
7. Guidelines to Model Writers . . . . . . . . . . . . . . . . . 8 | 7. Guidelines to Model Writers . . . . . . . . . . . . . . . . . 8 | |||
7.1. Define Standard Tags . . . . . . . . . . . . . . . . . . 8 | 7.1. Define Standard Tags . . . . . . . . . . . . . . . . . . 8 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | |||
8.1. YANG Module Tag Prefix Registry . . . . . . . . . . . . . 8 | 8.1. YANG Module Tag Prefix Registry . . . . . . . . . . . . . 9 | |||
8.2. YANG Module IETF Tag Registry . . . . . . . . . . . . . . 9 | 8.2. YANG Module IETF Tag Registry . . . . . . . . . . . . . . 9 | |||
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 11 | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 10 | 9.2. Informative References . . . . . . . . . . . . . . . . . 11 | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 11 | Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 11 | |||
Appendix A. Example . . . . . . . . . . . . . . . . . . . . . . 11 | Appendix B. Example . . . . . . . . . . . . . . . . . . . . . . 12 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
1. Introduction | 1. Introduction | |||
The use of tags for classification and organization is fairly | The use of tags for classification and organization is fairly | |||
ubiquitous not only within IETF protocols, but in the internet itself | ubiquitous not only within IETF protocols, but in the internet itself | |||
(e.g., #hashtags). One benefit of using tags for organization over a | (e.g., #hashtags). One benefit of using tags for organization over a | |||
rigid structure is that it is more flexible and can more easily adapt | rigid structure is that it is more flexible and can more easily adapt | |||
over time as technologies evolve. Tags can be usefully standardized, | over time as technologies evolve. Tags can be usefully standardized, | |||
but they can also serve as a non-standardized mechanism available for | but they can also serve as a non-standardized mechanism available for | |||
users to define themselves. This document provides a mechanism to | users to define themselves. This document provides a mechanism to | |||
define tags and associate them with YANG modules in a flexible | define tags and associate them with YANG modules in a flexible | |||
manner. In particular, tags may be standardized as well as assigned | manner. In particular, tags may be standardized as well as assigned | |||
during module definition; assigned by implementations; or dynamically | during module definition; assigned by implementations; or dynamically | |||
defined and set by users. | defined and set by users. | |||
This document defines a YANG module [RFC6020] which provides a list | This document defines a YANG module [RFC7950] which provides a list | |||
of module entries to allow for adding or removing of tags as well as | of module entries to allow for adding or removing of tags as well as | |||
viewing the set of tags associated with a module. | viewing the set of tags associated with a module. | |||
This document defines an extension statement to be used to indicate | This document defines an extension statement to be used to indicate | |||
tags that SHOULD be added by the module implementation automatically | tags that SHOULD be added by the module implementation automatically | |||
(i.e., outside of configuration). | (i.e., outside of configuration). | |||
This document also defines an IANA registry for tag prefixes as well | This document also defines an IANA registry for tag prefixes as well | |||
as a set of globally assigned tags. | as a set of globally assigned tags. | |||
Section 7 provides guidelines for authors of YANG data models. This | Section 7 provides guidelines for authors of YANG data models. This | |||
section updates [RFC8407]. | document updates [RFC8407]. | |||
The YANG data model in this document conforms to the Network | ||||
Management Datastore Architecture defined in [RFC8342]. | ||||
1.1. Some possible use cases of YANG module tags | 1.1. Some possible use cases of YANG module tags | |||
During this documents progression there were requests for example | During this documents progression there were requests for example | |||
uses of module tags. The following are a few example use cases for | uses of module tags. The following are a few example use cases for | |||
tags. This list is certainly not exhaustive. | tags. This list is certainly not exhaustive. | |||
One example use of tags would be to help filter different discrete | One example use of tags would be to help filter different discrete | |||
categories of YANG modules supported by a device. E.g., if modules | categories of YANG modules supported by a device. E.g., if modules | |||
are suitably tagged, then an XPath query can be used to list all of | are suitably tagged, then an XPath query can be used to list all of | |||
skipping to change at page 4, line 4 ¶ | skipping to change at page 4, line 10 ¶ | |||
Future management protocol extensions could allow for filtering | Future management protocol extensions could allow for filtering | |||
queries of configuration or operational state on a server based on | queries of configuration or operational state on a server based on | |||
tags. E.g., return all operational state related to system- | tags. E.g., return all operational state related to system- | |||
management. | management. | |||
2. Conventions Used in This Document | 2. Conventions Used in This Document | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
[RFC2119] [RFC8174] when, and only when, they appear in all capitals, | [RFC2119] [RFC8174] when, and only when, they appear in all capitals, | |||
as shown here. | as shown here. | |||
3. Tag Values | 3. Tag Values | |||
All tags begin with a prefix indicating who owns their definition. | All tags SHOULD begin with a prefix indicating who owns their | |||
An IANA registry is used to support standardizing tag prefixes. | definition. An IANA registry is used to support standardizing tag | |||
Currently 3 prefixes are defined with all others reserved. No | prefixes. Currently 3 prefixes are defined with all others reserved. | |||
further structure is imposed by this document on the value following | No further structure is imposed by this document on the value | |||
the standard prefix, and the value can contain any yang type 'string' | following the standard prefix, and the value can contain any yang | |||
characters except carriage-returns, newlines and tabs. | type 'string' characters except carriage-returns, newlines and tabs. | |||
3.1. IETF Standard Tags | 3.1. IETF Standard Tags | |||
An IETF standard tag is a tag that has the prefix "ietf:". All IETF | 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 | standard tags are registered with IANA in a registry defined later in | |||
this document. | this document. | |||
3.2. Vendor Tags | 3.2. Vendor Tags | |||
A vendor tag is a tag that has the prefix "vendor:". These tags are | A vendor tag is a tag that has the prefix "vendor:". These tags are | |||
skipping to change at page 5, line 9 ¶ | skipping to change at page 5, line 11 ¶ | |||
Tags can become associated with a module in a number of ways. Tags | Tags can become associated with a module in a number of ways. Tags | |||
may be defined and associated at module design time, at | may be defined and associated at module design time, at | |||
implementation time, or via user administrative control. As the main | implementation time, or via user administrative control. As the main | |||
consumer of tags are users, users may also remove any tag, no matter | consumer of tags are users, users may also remove any tag, no matter | |||
how the tag became associated with a module. | how the tag became associated with a module. | |||
4.1. Module Definition Association | 4.1. Module Definition Association | |||
A module definition can indicate a set of tags to be added by the | A module definition can indicate a set of tags to be added by the | |||
module implementer. These design time tags are indicated using the | module implementer. These design time tags are indicated using the | |||
module-tag extension statement. If the module definition will be | module-tag extension statement. If the module definition is IETF | |||
IETF standards track, the tags MUST also be IETF standard tags | standards track, the tags MUST also be IETF standard tags | |||
(Section 3.1). Thus, new modules can drive the addition of new | (Section 3.1). Thus, new modules can drive the addition of new | |||
standard tags to the IANA registry, and the IANA registry can serve | standard tags to the IANA registry, and the IANA registry can serve | |||
as a check against duplication. | as a check against duplication. | |||
4.2. Implementation Association | 4.2. Implementation Association | |||
An implementation MAY include additional tags associated with a | An implementation MAY include additional tags associated with a | |||
module. These tags may be standard or vendor specific tags. | module. These tags may be standard or vendor specific tags. | |||
4.3. Administrative Tagging | 4.3. Administrative Tagging | |||
Tags of any kind can be assigned and removed with using normal | Tags of any kind can be assigned and removed using normal | |||
configuration mechanisms. | configuration mechanisms. | |||
5. Tags Module Structure | 5. Tags Module Structure | |||
5.1. Tags Module Tree | 5.1. Tags Module Tree | |||
The tree associated with the "ietf-module-tags" module follows. The | The tree associated with the "ietf-module-tags" module follows. The | |||
meaning of the symbols can be found in [RFC8340]. | meaning of the symbols can be found in [RFC8340]. | |||
module: ietf-module-tags | module: ietf-module-tags | |||
+--rw module-tags | +--rw module-tags | |||
+--rw module* [name] | +--rw module* [name] | |||
+--rw name yang:yang-identifier | +--rw name yang:yang-identifier | |||
+--rw tag* tag | +--rw tag* tag | |||
+--rw masked-tag* tag | +--rw masked-tag* tag | |||
5.2. Tags Module | 5.2. Tags Module | |||
<CODE BEGINS> file "ietf-module-tags@2018-10-17.yang" | <CODE BEGINS> file "ietf-module-tags@2019-02-15.yang" | |||
module ietf-module-tags { | module ietf-module-tags { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-module-tags"; | namespace "urn:ietf:params:xml:ns:yang:ietf-module-tags"; | |||
prefix tags; | prefix tags; | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix yang; | prefix yang; | |||
} | } | |||
organization | ||||
"IETF NetMod Working Group (NetMod)"; | ||||
contact | ||||
"NetMod Working Group - <netmod@ietf.org>"; | ||||
organization | // RFC Ed.: replace XXXX with actual RFC number and | |||
"IETF NetMod Working Group (NetMod)"; | // remove this note. | |||
contact | description | |||
"NetMod Working Group - <netmod@ietf.org>"; | "This module describes a mechanism associating tags with YANG | |||
modules. Tags may be IANA assigned or privately defined. | ||||
// RFC Ed.: replace XXXX with actual RFC number and | Copyright (c) 2018 IETF Trust and the persons identified as | |||
// remove this note. | authors of the code. All rights reserved. | |||
description | Redistribution and use in source and binary forms, with or | |||
"This module describes a mechanism associating tags with YANG | without modification, is permitted pursuant to, and subject to | |||
modules. Tags may be IANA assigned or privately defined. | the license terms contained in, the Simplified BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
Relating to IETF Documents | ||||
(https://trustee.ietf.org/license-info). | ||||
Copyright (c) 2018 IETF Trust and the persons identified as | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
authors of the code. All rights reserved. | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
described in BCP 14 [RFC2119] [RFC8174] when, and only when, | ||||
they appear in all capitals, as shown here. | ||||
Redistribution and use in source and binary forms, with or | This version of this YANG module is part of RFC XXXX | |||
without modification, is permitted pursuant to, and subject to | (https://tools.ietf.org/html/rfcXXXX); see the RFC itself for | |||
the license terms contained in, the Simplified BSD License set | full legal notices."; | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
Relating to IETF Documents | ||||
(https://trustee.ietf.org/license-info). | ||||
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | // RFC Ed.: update the date below with the date of RFC publication | |||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'MAY', and | // and RFC number and remove this note. | |||
'OPTIONAL' in the module text are to be interpreted as described | ||||
in RFC 2119 (https://tools.ietf.org/html/rfc2119). | ||||
This version of this YANG module is part of RFC XXXX | revision 2018-10-17 { | |||
(https://tools.ietf.org/html/rfcXXXX); see the RFC itself for | description | |||
full legal notices."; | "Initial revision."; | |||
reference "RFC XXXX: YANG Module Tags"; | ||||
} | ||||
// RFC Ed.: update the date below with the date of RFC publication | typedef tag { | |||
// and RFC number and remove this note. | type string { | |||
length "1..max"; | ||||
pattern '[a-zA-Z_][a-zA-Z0-9\-_]*:[\S ]+'; | ||||
} | ||||
description | ||||
"A tag value is composed of a standard prefix followed by any | ||||
type 'string' value that does not include carriage return, | ||||
newline or tab characters."; | ||||
} | ||||
revision 2018-10-17 { | extension module-tag { | |||
description | argument tag; | |||
"Initial revision."; | description | |||
reference "RFC XXXX: YANG Module Tags"; | "The argument 'tag' is of type 'tag'. This extension statement | |||
} | is used by module authors to indicate the tags that SHOULD be | |||
added automatically by the system. As such the origin of the | ||||
value for the pre-defined tags should be set to 'system'."; | ||||
} | ||||
typedef tag { | container module-tags { | |||
type string { | description | |||
length "1..max"; | "Contains the list of modules and their associated tags"; | |||
pattern '[a-zA-Z_][a-zA-Z0-9\-_]*:[\S ]+'; | list module { | |||
} | key "name"; | |||
description | description | |||
"A tag value is composed of a standard prefix followed by any type | "A list of modules and their associated tags"; | |||
'string' value that does not include carriage return, newline or | leaf name { | |||
tab characters."; | type yang:yang-identifier; | |||
} | mandatory true; | |||
extension module-tag { | description | |||
argument tag; | "The YANG module name."; | |||
description | } | |||
"The argument 'tag' is of type 'tag'. This extension statement is | leaf-list tag { | |||
used by module authors to indicate the tags that SHOULD be added | type tag; | |||
automatically by the system. As such the origin of the value | description | |||
for the pre-defined tags should be set to 'system'."; | "Tags associated with the module. See the IANA 'YANG Module | |||
} | Tag Prefix' registry for reserved prefixes and the IANA | |||
'YANG Module IETF Tag' registry for IETF standard tags. | ||||
container module-tags { | The 'operational' state [RFC8342] view of this list is | |||
description | constructed using the following steps: | |||
"Contains the list of modules and their associated tags"; | ||||
list module { | ||||
key "name"; | ||||
description | ||||
"A list of modules and their associated tags"; | ||||
leaf name { | ||||
type yang:yang-identifier; | ||||
mandatory true; | ||||
description | ||||
"The YANG module name."; | ||||
} | ||||
leaf-list tag { | ||||
type tag; | ||||
description | ||||
"Tags associated with the module. See the IANA 'YANG Module | ||||
Tag Prefix' registry for reserved prefixes and the IANA 'YANG | ||||
Module IETF Tag' registry for IETF standard tags. | ||||
The operational view of this list is constructed using the following steps: | 1) System tags (i.e., tags of 'system' origin) are added. | |||
2) User configured tags (i.e., tags of 'intended' origin) | ||||
are added. | ||||
3) Any tag that is equal to a masked-tag is removed."; | ||||
} | ||||
leaf-list masked-tag { | ||||
type tag; | ||||
description | ||||
"The list of tags that should not be associated with this | ||||
module. The user can remove (mask) tags from the | ||||
operational state datastore [RFC8342] by adding them to | ||||
this list. It is not an error to add tags to this list | ||||
that are not associated with the module, but they have no | ||||
operational effect."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
1) System added tags are added. | ||||
2) User configured tags are added. | ||||
3) Any tag that is equal to a masked-tag is removed."; | ||||
} | ||||
leaf-list masked-tag { | ||||
type tag; | ||||
description | ||||
"The list of tags that should not be associated with this | ||||
module. This user can remove (mask) tags by adding | ||||
them to this list. It is not an error to add tags to this | ||||
list that are not associated with the module."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
6. Other Classifications | 6. Other Classifications | |||
It's worth noting that a different YANG module classification | It is worth noting that a different YANG module classification | |||
document exists [RFC8199]. That document is classifying modules in | document exists [RFC8199]. That document only classifies modules in | |||
only a logical manner and does not define tagging or any other | a logical manner and does not define tagging or any other mechanisms. | |||
mechanisms. It divides YANG modules into 2 categories (service or | It divides YANG modules into two categories (service or element) and | |||
element) and then into one of 3 origins: standard, vendor or user. | then into one of three origins: standard, vendor or user. It does | |||
It does provide a good way to discuss and identify modules in | provide a good way to discuss and identify modules in general. This | |||
general. This document defines standard tags to support [RFC8199] | document defines standard tags to support [RFC8199] style | |||
style classification. | classification. | |||
7. Guidelines to Model Writers | 7. Guidelines to Model Writers | |||
This section updates [RFC8407]. | This section updates [RFC8407]. | |||
7.1. Define Standard Tags | 7.1. Define Standard Tags | |||
A module can indicate using module-tag extension statements a set of | A module MAY indicate, using module-tag extension statements, a set | |||
tags that are to be automatically associated with it (i.e., not added | of tags that are to be automatically associated with it (i.e., not | |||
through configuration). | added through configuration). | |||
module example-module { | module example-module { | |||
... | ... | |||
import module-tags { prefix tags; } | import module-tags { prefix tags; } | |||
tags:module-tag "ietf:some-new-tag"; | tags:module-tag "ietf:some-new-tag"; | |||
tags:module-tag "ietf:some-other-tag"; | tags:module-tag "ietf:some-other-tag"; | |||
... | ... | |||
} | } | |||
skipping to change at page 9, line 25 ¶ | skipping to change at page 9, line 37 ¶ | |||
8.2. YANG Module IETF Tag Registry | 8.2. YANG Module IETF Tag Registry | |||
This registry allocates prefixes that have the standard prefix | This registry allocates prefixes that have the standard prefix | |||
"ietf:". New values should be well considered and not achievable | "ietf:". New values should be well considered and not achievable | |||
through a combination of already existing standard tags. | through a combination of already existing standard tags. | |||
The allocation policy for this registry is IETF Review [RFC5226]. | The allocation policy for this registry is IETF Review [RFC5226]. | |||
The initial values for this registry are as follows. | The initial values for this registry are as follows. | |||
+------------------------+------------------------------+-----------+ | +----------------------------+--------------------------+-----------+ | |||
| Tag | Description | Reference | | | Tag | Description | Reference | | |||
+------------------------+------------------------------+-----------+ | +----------------------------+--------------------------+-----------+ | |||
| ietf:rfc8199-element | A module for a network | [RFC8199] | | | ietf:network-element-class | A module for a network | [RFC8199] | | |||
| | element. | | | | | element. | | | |||
| | | | | | | | | | |||
| ietf:rfc8199-service | A module for a network | [RFC8199] | | | ietf:network-service-class | A module for a network | [RFC8199] | | |||
| | service. | | | | | service. | | | |||
| | | | | | | | | | |||
| ietf:rfc8199-standard | A module defined by a | [RFC8199] | | | ietf:sdo-defined-class | A module defined by a | [RFC8199] | | |||
| | standards organization. | | | | | standards organization. | | | |||
| | | | | | | | | | |||
| ietf:rfc8199-vendor | A module defined by a | [RFC8199] | | | ietf:vendor-defined-class | A module defined by a | [RFC8199] | | |||
| | vendor. | | | | | vendor. | | | |||
| | | | | | | | | | |||
| ietf:rfc8199-user | A module defined by the | [RFC8199] | | | ietf:user-defined-class | A module defined by the | [RFC8199] | | |||
| | user. | | | | | user. | | | |||
| | | | | | | | | | |||
| ietf:hardware | A module relating to | [This | | | ietf:hardware | A module relating to | [This | | |||
| | hardware (e.g., inventory). | document] | | | | hardware (e.g., | document] | | |||
| | | | | | | inventory). | | | |||
| ietf:software | A module relating to | [This | | | | | | | |||
| | software (e.g., installed | document] | | | ietf:software | A module relating to | [This | | |||
| | OS). | | | | | software (e.g., | document] | | |||
| | | | | | | installed OS). | | | |||
| ietf:qos | A module for managing | [This | | | | | | | |||
| | quality of service. | document] | | | ietf:qos | A module for managing | [This | | |||
| | | | | | | quality of service. | document] | | |||
| ietf:protocol | A module representing a | [This | | | | | | | |||
| | protocol. | document] | | | ietf:protocol | A module representing a | [This | | |||
| | | | | | | protocol. | document] | | |||
| ietf:system-management | A module relating to system | [This | | | | | | | |||
| | management (e.g., a system | document] | | | ietf:system-management | A module relating to | [This | | |||
| | management protocol such as | | | | | system management (e.g., | document] | | |||
| | syslog, TACAC+, SNMP, | | | | | a system management | | | |||
| | netconf, ...). | | | | | protocol such as syslog, | | | |||
| | | | | | | TACAC+, SNMP, netconf, | | | |||
| ietf:network-service | A module relating to network | [This | | | | ...). | | | |||
| | service (e.g., a network | document] | | | | | | | |||
| | service protocol such as an | | | | ietf:network-service | A module relating to | [This | | |||
| | NTP server, DNS server, DHCP | | | | | network service (e.g., a | document] | | |||
| | server, etc). | | | | | network service protocol | | | |||
| | | | | | | such as an NTP server, | | | |||
| ietf:oam | A module representing | [This | | | | DNS server, DHCP server, | | | |||
| | Operations, Administration, | document] | | | | etc). | | | |||
| | and Maintenance (e.g., BFD). | | | | | | | | |||
| | | | | | ietf:oam | A module representing | [This | | |||
| ietf:routing | A module related to routing. | [This | | | | Operations, | document] | | |||
| | | document] | | | | Administration, and | | | |||
| | | | | | | Maintenance (e.g., BFD). | | | |||
| ietf:signaling | A module representing | [This | | | | | | | |||
| | control plane signaling. | document] | | | ietf:routing | A module related to | [This | | |||
| | | | | | | routing. | document] | | |||
| ietf:lmp | A module representing a link | [This | | | | | | | |||
| | management protocol. | document] | | | ietf:signaling | A module representing | [This | | |||
+------------------------+------------------------------+-----------+ | | | control plane signaling. | document] | | |||
| | | | | ||||
| ietf:lmp | A module representing a | [This | | ||||
| | link management | document] | | ||||
| | protocol. | | | ||||
+----------------------------+--------------------------+-----------+ | ||||
Table 1: IETF Module Tag Registry | Table 1: IETF Module Tag Registry | |||
9. Acknowledgements | 9. References | |||
Special thanks to Robert Wilton for his help improving the | ||||
introduction and providing the example use cases. | ||||
10. References | ||||
10.1. Normative References | 9.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | |||
IANA Considerations Section in RFCs", RFC 5226, | IANA Considerations Section in RFCs", RFC 5226, | |||
DOI 10.17487/RFC5226, May 2008, | DOI 10.17487/RFC5226, May 2008, | |||
<https://www.rfc-editor.org/info/rfc5226>. | <https://www.rfc-editor.org/info/rfc5226>. | |||
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
the Network Configuration Protocol (NETCONF)", RFC 6020, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
DOI 10.17487/RFC6020, October 2010, | <https://www.rfc-editor.org/info/rfc7950>. | |||
<https://www.rfc-editor.org/info/rfc6020>. | ||||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[RFC8199] Bogdanovic, D., Claise, B., and C. Moberg, "YANG Module | ||||
Classification", RFC 8199, DOI 10.17487/RFC8199, July | ||||
2017, <https://www.rfc-editor.org/info/rfc8199>. | ||||
[RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of | [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of | |||
Documents Containing YANG Data Models", BCP 216, RFC 8407, | Documents Containing YANG Data Models", BCP 216, RFC 8407, | |||
DOI 10.17487/RFC8407, October 2018, | DOI 10.17487/RFC8407, October 2018, | |||
<https://www.rfc-editor.org/info/rfc8407>. | <https://www.rfc-editor.org/info/rfc8407>. | |||
10.2. Informative References | 9.2. Informative References | |||
[RFC8199] Bogdanovic, D., Claise, B., and C. Moberg, "YANG Module | ||||
Classification", RFC 8199, DOI 10.17487/RFC8199, July | ||||
2017, <https://www.rfc-editor.org/info/rfc8199>. | ||||
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8340>. | <https://www.rfc-editor.org/info/rfc8340>. | |||
Appendix A. Example | [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
and R. Wilton, "Network Management Datastore Architecture | ||||
(NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | ||||
<https://www.rfc-editor.org/info/rfc8342>. | ||||
Appendix A. Acknowledgements | ||||
Special thanks to Robert Wilton for his help improving the | ||||
introduction and providing the example use cases. | ||||
Appendix B. Example | ||||
The following is a fictional example result from a query of the | The following is a fictional example result from a query of the | |||
module tags list. For the sake of brevity only a few module results | module tags list. For the sake of brevity only a few module results | |||
are imagined. | are imagined. | |||
{ | { | |||
"ietf-module-tags:module-tags": { | "ietf-module-tags:module-tags": { | |||
"module": [ | "module": [ | |||
{ | { | |||
"name": "ietf-bfd", | "name": "ietf-bfd", | |||
"tag": [ | "tag": [ | |||
"ietf:protocol", | "ietf:network-element-class", | |||
"ietf:oam", | "ietf:oam", | |||
"ietf:rfc8199-element", | "ietf:protocol", | |||
"ietf:rfc8199-standard" | "ietf:sdo-defined-class" | |||
] | ] | |||
}, | }, | |||
{ | { | |||
"name": "ietf-isis", | "name": "ietf-isis", | |||
"tag": [ | "tag": [ | |||
"ietf:network-element-class", | ||||
"ietf:protocol", | "ietf:protocol", | |||
"ietf:rfc8199-element", | ||||
"ietf:rfc8199-standard", | ||||
"ietf:routing" | "ietf:routing" | |||
"ietf:sdo-defined-class", | ||||
] | ] | |||
}, | }, | |||
{ | { | |||
"name": "ietf-ssh-server", | "name": "ietf-ssh-server", | |||
"tag": [ | "tag": [ | |||
"ietf:network-element-class", | ||||
"ietf:protocol", | "ietf:protocol", | |||
"ietf:rfc8199-element", | "ietf:sdo-defined-class", | |||
"ietf:rfc8199-standard", | ||||
"ietf:system-management" | "ietf:system-management" | |||
] | ] | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
Authors' Addresses | Authors' Addresses | |||
Christan Hopps | Christan Hopps | |||
End of changes. 44 change blocks. | ||||
208 lines changed or deleted | 224 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |