| < draft-ietf-netmod-module-tags-05.txt | draft-ietf-netmod-module-tags-06.txt > | |||
|---|---|---|---|---|
| Network Working Group C. Hopps | Network Working Group C. Hopps | |||
| Internet-Draft L. Berger | Internet-Draft LabN Consulting, L.L.C. | |||
| Updates: RFC8407 (if approved) LabN Consulting, L.L.C. | Updates: 8407 (if approved) L. Berger | |||
| Intended status: Standards Track D. Bogdanovic | Intended status: Standards Track LabN Consulting, LLC. | |||
| Expires: August 19, 2019 Volta Networks | Expires: September 3, 2019 D. Bogdanovic | |||
| February 15, 2019 | Volta Networks | |||
| March 2, 2019 | ||||
| YANG Module Tags | YANG Module Tags | |||
| draft-ietf-netmod-module-tags-05 | draft-ietf-netmod-module-tags-06 | |||
| 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 also provides guidance to | |||
| model writers and, as such, this document updates [RFC8407]. | future model writers, as such, this document updates RFC8407. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| 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 19, 2019. | This Internet-Draft will expire on September 3, 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 . . . . . . . . . . . . . . 4 | 1.2. Conventions Used in This Document . . . . . . . . . . . . 4 | |||
| 3. Tag Values . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Tag Values . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.1. IETF Standard Tags . . . . . . . . . . . . . . . . . . . 4 | 2.1. IETF Standard Tags . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.2. Vendor Tags . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.2. Vendor Tags . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.3. User Tags . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.3. User Tags . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.4. Reserved Tags . . . . . . . . . . . . . . . . . . . . . . 4 | 2.4. Reserved Tags . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4. Tag Management . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Tag Management . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4.1. Module Definition Association . . . . . . . . . . . . . . 5 | 3.1. Module Definition Tagging . . . . . . . . . . . . . . . . 5 | |||
| 4.2. Implementation Association . . . . . . . . . . . . . . . 5 | 3.2. Implementation Tagging . . . . . . . . . . . . . . . . . 5 | |||
| 4.3. Administrative Tagging . . . . . . . . . . . . . . . . . 5 | 3.3. User Tagging . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 5. Tags Module Structure . . . . . . . . . . . . . . . . . . . . 5 | 4. Tags Module Structure . . . . . . . . . . . . . . . . . . . . 5 | |||
| 5.1. Tags Module Tree . . . . . . . . . . . . . . . . . . . . 5 | 4.1. Tags Module Tree . . . . . . . . . . . . . . . . . . . . 5 | |||
| 5.2. Tags Module . . . . . . . . . . . . . . . . . . . . . . . 5 | 4.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 6. Other Classifications . . . . . . . . . . . . . . . . . . . . 8 | 5. Other Classifications . . . . . . . . . . . . . . . . . . . . 8 | |||
| 7. Guidelines to Model Writers . . . . . . . . . . . . . . . . . 8 | 6. Guidelines to Model Writers . . . . . . . . . . . . . . . . . 8 | |||
| 7.1. Define Standard Tags . . . . . . . . . . . . . . . . . . 8 | 6.1. Define Standard Tags . . . . . . . . . . . . . . . . . . 8 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 8.1. YANG Module Tag Prefix Registry . . . . . . . . . . . . . 9 | 7.1. YANG Module Tag Prefixes Registry . . . . . . . . . . . . 9 | |||
| 8.2. YANG Module IETF Tag Registry . . . . . . . . . . . . . . 9 | 7.2. YANG Module Tags Registry . . . . . . . . . . . . . . . . 10 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 7.3. Updates to the IETF XML Registry . . . . . . . . . . . . 11 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 11 | 7.4. Updates to the YANG Module Names Registry . . . . . . . . 11 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 11 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | |||
| Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 11 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| Appendix B. Example . . . . . . . . . . . . . . . . . . . . . . 12 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 12 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | 9.2. Informative References . . . . . . . . . . . . . . . . . 12 | |||
| Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 13 | ||||
| Appendix B. Acknowledgements . . . . . . . . . . . . . . . . . . 14 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 | ||||
| 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 | |||
| rigid structure is that it is more flexible and can more easily adapt | a rigid structure is that it is more flexible and can more easily | |||
| over time as technologies evolve. Tags can be usefully standardized, | adapt over time as technologies evolve. Tags can be usefully | |||
| but they can also serve as a non-standardized mechanism available for | standardized, but they can also serve as a non-standardized mechanism | |||
| users to define themselves. This document provides a mechanism to | available for users to define themselves. This document provides a | |||
| define tags and associate them with YANG modules in a flexible | mechanism to define tags and associate them with YANG modules in a | |||
| manner. In particular, tags may be standardized as well as assigned | flexible manner. In particular, tags may be standardized as well as | |||
| during module definition; assigned by implementations; or dynamically | assigned during module definition; assigned by implementations; or | |||
| defined and set by users. | dynamically defined and set by users. | |||
| This document defines a YANG module [RFC7950] 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 6 provides guidelines for authors of YANG data models. | |||
| document updates [RFC8407]. | ||||
| This document updates [RFC8407]. | ||||
| The YANG data model in this document conforms to the Network | The YANG data model in this document conforms to the Network | |||
| Management Datastore Architecture defined in [RFC8342]. | 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. | |||
| skipping to change at page 4, line 5 ¶ | skipping to change at page 4, line 10 ¶ | |||
| (e.g. YANG catalog). A query restricted to the 'ietf:routing' | (e.g. YANG catalog). A query restricted to the 'ietf:routing' | |||
| module tag could be used to return only the IETF YANG modules | module tag could be used to return only the IETF YANG modules | |||
| associated with routing. Without tags, a user would need to know the | associated with routing. Without tags, a user would need to know the | |||
| name of all the IETF routing protocol YANG modules. | name of all the IETF routing protocol YANG modules. | |||
| 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 | 1.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 | 2. Tag Values | |||
| All tags SHOULD begin with a prefix indicating who owns their | All tags SHOULD begin with a prefix indicating who owns their | |||
| definition. An IANA registry is used to support standardizing tag | definition. An IANA registry is used to support standardizing tag | |||
| prefixes. Currently 3 prefixes are defined with all others reserved. | prefixes Section 7.1. Currently 3 prefixes are defined with all | |||
| No further structure is imposed by this document on the value | others reserved. No further structure is imposed by this document on | |||
| following the standard prefix, and the value can contain any yang | the value following the standard prefix, and the value can contain | |||
| type 'string' characters except carriage-returns, newlines and tabs. | any yang type 'string' characters except carriage-returns, newlines | |||
| and tabs. | ||||
| 3.1. IETF Standard Tags | Again, except for the conflict-avoiding prefix, this document is not | |||
| specifying any structure on (i.e., restricting) the tag values on | ||||
| purpose. The intent is to avoid arbitrarily restricting the values | ||||
| that designers, implementers and users can use. As a result of this | ||||
| choice, designers, implementers, and users are free to add or not add | ||||
| any structure they may require to their own tag values. | ||||
| 2.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 Section 7.2. | |||
| 3.2. Vendor Tags | 2.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 | |||
| defined by the vendor that implements the module, and are not | defined by the vendor that implements the module, and are not | |||
| standardized; however, it is RECOMMENDED that the vendor include | standardized; however, it is RECOMMENDED that the vendor include | |||
| extra identification in the tag to avoid collisions such as using the | extra identification in the tag to avoid collisions such as using the | |||
| enterpise or organization name follwing the "vendor:" prefix (e.g., | enterpise or organization name follwing the "vendor:" prefix (e.g., | |||
| vendor:example.com:vendor-defined-classifier). | vendor:example.com:vendor-defined-classifier). | |||
| 3.3. User Tags | 2.3. User Tags | |||
| A user tag is any tag that has the prefix "user:". These tags are | A user tag is any tag that has the prefix "user:". These tags are | |||
| defined by the user/administrator and will never be standardized. | defined by the user/administrator and will never be standardized. | |||
| 3.4. Reserved Tags | 2.4. Reserved Tags | |||
| Any tag not starting with the prefix "ietf:", "vendor:" or "user:" is | Any tag not starting with the prefix "ietf:", "vendor:" or "user:" is | |||
| reserved for future standardization. | reserved for future standardization. | |||
| 4. Tag Management | 3. Tag Management | |||
| 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 | 3.1. Module Definition Tagging | |||
| A module definition can indicate a set of tags to be added by the | A module definition MAY 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 is IETF | module-tag extension statement. | |||
| standards track, the tags MUST also be IETF standard tags | ||||
| (Section 3.1). Thus, new modules can drive the addition of new | If the module definition is IETF standards track, the tags MUST also | |||
| be Section 2.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 | 3.2. Implementation Tagging | |||
| 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 SHOULD be standard or vendor specific tags. | |||
| 4.3. Administrative Tagging | 3.3. User Tagging | |||
| Tags of any kind can be assigned and removed using normal | Tags of any kind can be assigned and removed by the user using normal | |||
| configuration mechanisms. | configuration mechanisms. | |||
| 5. Tags Module Structure | 4. Tags Module Structure | |||
| 5.1. Tags Module Tree | 4.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 | 4.2. YANG Module | |||
| <CODE BEGINS> file "ietf-module-tags@2019-02-15.yang" | <CODE BEGINS> file "ietf-module-tags@2019-03-02.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 | organization | |||
| "IETF NetMod Working Group (NetMod)"; | "IETF NetMod Working Group (NetMod)"; | |||
| contact | contact | |||
| "NetMod Working Group - <netmod@ietf.org>"; | "NetMod Working Group - <netmod@ietf.org>"; | |||
| // RFC Ed.: replace XXXX with actual RFC number and | // RFC Ed.: replace XXXX with actual RFC number and | |||
| // remove this note. | // remove this note. | |||
| description | description | |||
| "This module describes a mechanism associating tags with YANG | "This module describes a mechanism associating tags with YANG | |||
| skipping to change at page 6, line 39 ¶ | skipping to change at page 7, line 12 ¶ | |||
| described in BCP 14 [RFC2119] [RFC8174] when, and only when, | described in BCP 14 [RFC2119] [RFC8174] when, and only when, | |||
| they appear in all capitals, as shown here. | they appear in all capitals, as shown here. | |||
| This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC XXXX | |||
| (https://tools.ietf.org/html/rfcXXXX); see the RFC itself for | (https://tools.ietf.org/html/rfcXXXX); see the RFC itself for | |||
| full legal notices."; | full legal notices."; | |||
| // RFC Ed.: update the date below with the date of RFC publication | // RFC Ed.: update the date below with the date of RFC publication | |||
| // and RFC number and remove this note. | // and RFC number and remove this note. | |||
| revision 2018-10-17 { | revision 2019-03-02 { | |||
| description | description | |||
| "Initial revision."; | "Initial revision."; | |||
| reference "RFC XXXX: YANG Module Tags"; | reference "RFC XXXX: YANG Module Tags"; | |||
| } | } | |||
| typedef tag { | typedef tag { | |||
| type string { | type string { | |||
| length "1..max"; | length "1..max"; | |||
| pattern '[a-zA-Z_][a-zA-Z0-9\-_]*:[\S ]+'; | pattern '[a-zA-Z_][a-zA-Z0-9\-_]*:[\S ]+'; | |||
| } | } | |||
| skipping to change at page 7, line 35 ¶ | skipping to change at page 8, line 6 ¶ | |||
| leaf name { | leaf name { | |||
| type yang:yang-identifier; | type yang:yang-identifier; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "The YANG module name."; | "The YANG module name."; | |||
| } | } | |||
| leaf-list tag { | leaf-list tag { | |||
| type tag; | type tag; | |||
| description | description | |||
| "Tags associated with the module. See the IANA 'YANG Module | "Tags associated with the module. See the IANA 'YANG Module | |||
| Tag Prefix' registry for reserved prefixes and the IANA | Tag Prefixes' registry for reserved prefixes and the IANA | |||
| 'YANG Module IETF Tag' registry for IETF standard tags. | 'YANG Module Tags' registry for IETF standard tags. | |||
| The 'operational' state [RFC8342] view of this list is | The 'operational' state [RFC8342] view of this list is | |||
| constructed using the following steps: | constructed using the following steps: | |||
| 1) System tags (i.e., tags of 'system' origin) are added. | 1) System tags (i.e., tags of 'system' origin) are added. | |||
| 2) User configured tags (i.e., tags of 'intended' origin) | 2) User configured tags (i.e., tags of 'intended' origin) | |||
| are added. | are added. | |||
| 3) Any tag that is equal to a masked-tag is removed."; | 3) Any tag that is equal to a masked-tag is removed."; | |||
| } | } | |||
| leaf-list masked-tag { | leaf-list masked-tag { | |||
| skipping to change at page 8, line 13 ¶ | skipping to change at page 8, line 32 ¶ | |||
| operational state datastore [RFC8342] by adding them to | operational state datastore [RFC8342] by adding them to | |||
| this list. It is not an error to add tags to this list | this list. It is not an error to add tags to this list | |||
| that are not associated with the module, but they have no | that are not associated with the module, but they have no | |||
| operational effect."; | operational effect."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 6. Other Classifications | 5. Other Classifications | |||
| It is worth noting that a different YANG module classification | It is worth noting that a different YANG module classification | |||
| document exists [RFC8199]. That document only classifies modules in | document exists [RFC8199]. That document only classifies modules in | |||
| a logical manner and does not define tagging or any other mechanisms. | a logical manner and does not define tagging or any other mechanisms. | |||
| It divides YANG modules into two categories (service or element) and | It divides YANG modules into two categories (service or element) and | |||
| then into one of three origins: standard, vendor or user. It does | then into one of three origins: standard, vendor or user. It does | |||
| provide a good way to discuss and identify modules in general. This | provide a good way to discuss and identify modules in general. This | |||
| document defines standard tags to support [RFC8199] style | document defines standard tags to support [RFC8199] style | |||
| classification. | classification. | |||
| 7. Guidelines to Model Writers | 6. Guidelines to Model Writers | |||
| This section updates [RFC8407]. | This section updates [RFC8407]. | |||
| 7.1. Define Standard Tags | 6.1. Define Standard Tags | |||
| A module MAY indicate, using module-tag extension statements, a set | A module MAY indicate, using module-tag extension statements, a set | |||
| of tags that are to be automatically associated with it (i.e., not | of tags that are to be automatically associated with it (i.e., not | |||
| added 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"; | |||
| ... | // ... | |||
| } | } | |||
| The module writer can use existing standard tags, or use new tags | The module writer can use existing standard tags, or use new tags | |||
| defined in the model definition, as appropriate. For standardized | defined in the model definition, as appropriate. For standardized | |||
| modules new tags MUST be assigned in the IANA registry defined below, | modules new tags MUST be assigned in the IANA registry defined below, | |||
| see Section 8.2 below. | see Section 7.2. | |||
| 8. IANA Considerations | 7. IANA Considerations | |||
| 8.1. YANG Module Tag Prefix Registry | 7.1. YANG Module Tag Prefixes Registry | |||
| IANA is asked to create a new registry "YANG Module Tag Prefixes" | ||||
| grouped under a new "Protocol" category named "YANG Module Tags". | ||||
| This registry allocates tag prefixes. All YANG module tags SHOULD | This registry allocates tag prefixes. All YANG module tags SHOULD | |||
| begin with one of the prefixes in this registry. | begin with one of the prefixes in this registry. | |||
| Prefix entries in this registry should be short strings consisting of | ||||
| lowercase ASCII alpha-numeric characters and a final ":" character. | ||||
| The allocation policy for this registry is Specification Required | The allocation policy for this registry is Specification Required | |||
| [RFC5226]. | [RFC8126]. | |||
| The initial values for this registry are as follows. | The initial values for this registry are as follows. | |||
| prefix description | +---------+---------------------------------------------------------+ | |||
| -------- --------------------------------------------------- | | Prefix | Description | | |||
| ietf: IETF Standard Tag allocated in the IANA YANG Module | +---------+---------------------------------------------------------+ | |||
| IETF Tag Registry. | | ietf: | IETF Standard Tag allocated in the IANA YANG Module | | |||
| vendor: Non-standardized tags allocated by the module implementer. | | | Tags registry. | | |||
| user: Non-standardized tags allocated by and for the user. | | | | | |||
| | vendor: | Non-standardized tags allocated by the module | | ||||
| | | implementer. | | ||||
| | | | | ||||
| | user: | Non-standardized tags allocated by and for the user. | | ||||
| +---------+---------------------------------------------------------+ | ||||
| Other SDOs (standard organizations) wishing to standardize their own | Other standards organizations (SDOs) wishing to standardize their own | |||
| set of tags could allocate a top level prefix from this registry. | set of tags should allocate a prefix from this registry. | |||
| 8.2. YANG Module IETF Tag Registry | 7.2. YANG Module Tags Registry | |||
| IANA is asked to create a new registry "YANG Module Tags" grouped | ||||
| under a new "Protocol" category "YANG Module Tags". This registry | ||||
| should be included below "YANG Module Tag Prefixes" when listed on | ||||
| the same page. | ||||
| 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 [RFC8126]. | |||
| 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:network-element-class | A module for a network | [RFC8199] | | | ietf:network-element-class | [RFC8199] network | [RFC8199] | | |||
| | | element. | | | | | element. | | | |||
| | | | | | | | | | | |||
| | ietf:network-service-class | A module for a network | [RFC8199] | | | ietf:network-service-class | [RFC8199] network | [RFC8199] | | |||
| | | service. | | | | | service. | | | |||
| | | | | | | | | | | |||
| | ietf:sdo-defined-class | A module defined by a | [RFC8199] | | | ietf:sdo-defined-class | Module is defined by a | [RFC8199] | | |||
| | | standards organization. | | | | | standards organization. | | | |||
| | | | | | | | | | | |||
| | ietf:vendor-defined-class | A module defined by a | [RFC8199] | | | ietf:vendor-defined-class | Module is defined by a | [RFC8199] | | |||
| | | vendor. | | | | | vendor. | | | |||
| | | | | | ||||
| | ietf:user-defined-class | A module defined by the | [RFC8199] | | ||||
| | | user. | | | ||||
| | | | | | | | | | | |||
| | ietf:hardware | A module relating to | [This | | | ietf:user-defined-class | Module is defined by the | [RFC8199] | | |||
| | | hardware (e.g., | document] | | | | user. | | | |||
| | | inventory). | | | ||||
| | | | | | | | | | | |||
| | ietf:software | A module relating to | [This | | | ietf:hardware | Relates to hardware | [This | | |||
| | | software (e.g., | document] | | | | (e.g., inventory). | document] | | |||
| | | installed OS). | | | ||||
| | | | | | | | | | | |||
| | ietf:qos | A module for managing | [This | | | ietf:software | Relates to software | [This | | |||
| | | quality of service. | document] | | | | (e.g., installed OS). | document] | | |||
| | | | | | | | | | | |||
| | ietf:protocol | A module representing a | [This | | | ietf:protocol | Represents a protocol | [This | | |||
| | | protocol. | document] | | | | (often combined with | document] | | |||
| | | another tag to refine). | | | ||||
| | | | | | | | | | | |||
| | ietf:system-management | A module relating to | [This | | | ietf:qos | Relates to quality of | [This | | |||
| | | system management (e.g., | document] | | | | service. | document] | | |||
| | | a system management | | | ||||
| | | protocol such as syslog, | | | ||||
| | | TACAC+, SNMP, netconf, | | | ||||
| | | ...). | | | ||||
| | | | | | | | | | | |||
| | ietf:network-service | A module relating to | [This | | | ietf:network-service-app | Relates to a network | [This | | |||
| | | network service (e.g., a | document] | | | | service application | document] | | |||
| | | network service protocol | | | | | (e.g., an NTP server, | | | |||
| | | such as an NTP server, | | | ||||
| | | DNS server, DHCP server, | | | | | DNS server, DHCP server, | | | |||
| | | etc). | | | | | etc). | | | |||
| | | | | | | | | | | |||
| | ietf:oam | A module representing | [This | | | ietf:system-management | Relates to system | [This | | |||
| | | Operations, | document] | | | | management (e.g., a | document] | | |||
| | | Administration, and | | | | | system management | | | |||
| | | protocol such as syslog, | | | ||||
| | | TACAC+, SNMP, netconf, | | | ||||
| | | ...). | | | ||||
| | | | | | ||||
| | ietf:oam | Relates to Operations, | [This | | ||||
| | | Administration, and | document] | | ||||
| | | Maintenance (e.g., BFD). | | | | | Maintenance (e.g., BFD). | | | |||
| | | | | | | | | | | |||
| | ietf:routing | A module related to | [This | | | ietf:routing | Relates to routing. | [This | | |||
| | | routing. | document] | | | | | document] | | |||
| | | | | | | | | | | |||
| | ietf:signaling | A module representing | [This | | | ietf:signaling | Relates to control plane | [This | | |||
| | | control plane signaling. | document] | | | | signaling. | document] | | |||
| | | | | | | | | | | |||
| | ietf:lmp | A module representing a | [This | | | ietf:link-management | Relates to link | [This | | |||
| | | link management | document] | | | | management. | document] | | |||
| | | protocol. | | | ||||
| +----------------------------+--------------------------+-----------+ | +----------------------------+--------------------------+-----------+ | |||
| Table 1: IETF Module Tag Registry | 7.3. Updates to the IETF XML Registry | |||
| This document registers a URI in the "IETF XML Registry" [RFC3688]. | ||||
| Following the format in [RFC3688], the following registration has | ||||
| been made: | ||||
| URI: urn:ietf:params:xml:ns:yang:ietf-module-tags | ||||
| Registrant Contact: The IESG. | ||||
| XML: N/A; the requested URI is an XML namespace. | ||||
| 7.4. Updates to the YANG Module Names Registry | ||||
| This document registers one YANG module in the "YANG Module Names" | ||||
| registry [RFC6020]. Following the format in [RFC6020], the following | ||||
| registration has been made: | ||||
| name: ietf-module-tags | ||||
| namespace: urn:ietf:params:xml:ns:yang:ietf-module-tags | ||||
| prefix: tags | ||||
| reference: RFC XXXX (RFC Ed.: replace XXX with actual RFC number and | ||||
| remove this note.) | ||||
| 8. Security Considerations | ||||
| The YANG module defined in this memo is designed to be accessed via | ||||
| the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the | ||||
| secure transport layer and the mandatory-to-implement secure | ||||
| transport is SSH [RFC6242]. | ||||
| This document adds the ability to associate tag meta-data with YANG | ||||
| modules. This document does not define any actions based on these | ||||
| associations, and none are yet defined, and therefore it does not by | ||||
| itself introduce any new security considerations. | ||||
| Users of the tag-meta data may define various actions to be taken | ||||
| based on the tag meta-data. These actions and their definitions are | ||||
| outside the scope of this document. Users will need to consider the | ||||
| security implications of any actions they choose to define. | ||||
| 9. References | 9. References | |||
| 9.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 | ||||
| IANA Considerations Section in RFCs", RFC 5226, | ||||
| DOI 10.17487/RFC5226, May 2008, | ||||
| <https://www.rfc-editor.org/info/rfc5226>. | ||||
| [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
| RFC 7950, DOI 10.17487/RFC7950, August 2016, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
| <https://www.rfc-editor.org/info/rfc7950>. | <https://www.rfc-editor.org/info/rfc7950>. | |||
| [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | ||||
| Writing an IANA Considerations Section in RFCs", BCP 26, | ||||
| RFC 8126, DOI 10.17487/RFC8126, June 2017, | ||||
| <https://www.rfc-editor.org/info/rfc8126>. | ||||
| [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>. | |||
| [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of | ||||
| Documents Containing YANG Data Models", BCP 216, RFC 8407, | ||||
| DOI 10.17487/RFC8407, October 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8407>. | ||||
| 9.2. Informative References | 9.2. Informative References | |||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | ||||
| DOI 10.17487/RFC3688, January 2004, | ||||
| <https://www.rfc-editor.org/info/rfc3688>. | ||||
| [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | ||||
| the Network Configuration Protocol (NETCONF)", RFC 6020, | ||||
| DOI 10.17487/RFC6020, October 2010, | ||||
| <https://www.rfc-editor.org/info/rfc6020>. | ||||
| [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | ||||
| and A. Bierman, Ed., "Network Configuration Protocol | ||||
| (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | ||||
| <https://www.rfc-editor.org/info/rfc6241>. | ||||
| [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | ||||
| Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | ||||
| <https://www.rfc-editor.org/info/rfc6242>. | ||||
| [RFC8199] Bogdanovic, D., Claise, B., and C. Moberg, "YANG Module | [RFC8199] Bogdanovic, D., Claise, B., and C. Moberg, "YANG Module | |||
| Classification", RFC 8199, DOI 10.17487/RFC8199, July | Classification", RFC 8199, DOI 10.17487/RFC8199, July | |||
| 2017, <https://www.rfc-editor.org/info/rfc8199>. | 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>. | |||
| [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
| and R. Wilton, "Network Management Datastore Architecture | and R. Wilton, "Network Management Datastore Architecture | |||
| (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8342>. | <https://www.rfc-editor.org/info/rfc8342>. | |||
| Appendix A. Acknowledgements | [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of | |||
| Documents Containing YANG Data Models", BCP 216, RFC 8407, | ||||
| Special thanks to Robert Wilton for his help improving the | DOI 10.17487/RFC8407, October 2018, | |||
| introduction and providing the example use cases. | <https://www.rfc-editor.org/info/rfc8407>. | |||
| Appendix B. Example | Appendix A. Examples | |||
| 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. | |||
| { | <ns0:config xmlns:ns0="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| "ietf-module-tags:module-tags": { | <t:module-tags xmlns:t="urn:ietf:params:xml:ns:yang:ietf-module-tags"> | |||
| "module": [ | <t:module> | |||
| { | <t:name>ietf-bfd</t:name> | |||
| "name": "ietf-bfd", | <t:tag>ietf:network-element-class</t:tag> | |||
| "tag": [ | <t:tag>ietf:oam</t:tag> | |||
| "ietf:network-element-class", | <t:tag>ietf:protocol</t:tag> | |||
| "ietf:oam", | <t:tag>ietf:sdo-defined-class</t:tag> | |||
| "ietf:protocol", | </t:module> | |||
| "ietf:sdo-defined-class" | <t:module> | |||
| ] | <t:name>ietf-isis</t:name> | |||
| }, | <t:tag>ietf:network-element-class</t:tag> | |||
| { | <t:tag>ietf:protocol</t:tag> | |||
| "name": "ietf-isis", | <t:tag>ietf:sdo-defined-class</t:tag> | |||
| "tag": [ | <t:tag>ietf:routing</t:tag> | |||
| "ietf:network-element-class", | </t:module> | |||
| "ietf:protocol", | <t:module> | |||
| "ietf:routing" | <t:name>ietf-ssh-server</t:name> | |||
| "ietf:sdo-defined-class", | <t:tag>ietf:network-element-class</t:tag> | |||
| ] | <t:tag>ietf:protocol</t:tag> | |||
| }, | <t:tag>ietf:sdo-defined-class</t:tag> | |||
| { | <t:tag>ietf:system-management</t:tag> | |||
| "name": "ietf-ssh-server", | </t:module> | |||
| "tag": [ | </t:module-tags> | |||
| "ietf:network-element-class", | </ns0:config> | |||
| "ietf:protocol", | ||||
| "ietf:sdo-defined-class", | Appendix B. Acknowledgements | |||
| "ietf:system-management" | ||||
| ] | Special thanks to Robert Wilton for his help improving the | |||
| } | introduction and providing the example use cases. | |||
| ] | ||||
| } | ||||
| } | ||||
| Authors' Addresses | Authors' Addresses | |||
| Christan Hopps | Christian Hopps | |||
| LabN Consulting, L.L.C. | LabN Consulting, L.L.C. | |||
| Email: chopps@chopps.org | Email: chopps@chopps.org | |||
| Lou Berger | Lou Berger | |||
| LabN Consulting, L.L.C. | LabN Consulting, LLC. | |||
| Email: lberger@labn.net | Email: lberger@labn.net | |||
| Dean Bogdanovic | Dean Bogdanovic | |||
| Volta Networks | Volta Networks | |||
| Email: ivandean@gmail.com | Email: ivandean@gmail.com | |||
| End of changes. 73 change blocks. | ||||
| 197 lines changed or deleted | 275 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||