| < draft-ietf-netmod-module-tags-03.txt | draft-ietf-netmod-module-tags-04.txt > | |||
|---|---|---|---|---|
| Network Working Group C. Hopps | Network Working Group C. Hopps | |||
| Internet-Draft Deutsche Telekom | Internet-Draft L. Berger | |||
| Updates: rfc6087bis (if approved) L. Berger | Updates: RFC8407 (if approved) LabN Consulting, L.L.C. | |||
| Intended status: Standards Track LabN Consulting, L.L.C. | Intended status: Standards Track D. Bogdanovic | |||
| Expires: April 20, 2019 D. Bogdanovic | Expires: August 2, 2019 Volta Networks | |||
| October 17, 2018 | January 29, 2019 | |||
| YANG Module Tags | YANG Module Tags | |||
| draft-ietf-netmod-module-tags-03 | draft-ietf-netmod-module-tags-04 | |||
| 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 | model writers and, as such, this document updates [RFC8407]. | |||
| [I-D.ietf-netmod-rfc6087bis]. | ||||
| 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 April 20, 2019. | This Internet-Draft will expire on August 2, 2019. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2018 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 | ||||
| 2. Conventions Used in This Document . . . . . . . . . . . . . . 3 | 2. Conventions Used in This Document . . . . . . . . . . . . . . 3 | |||
| 3. Tag Values . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 3. Tag Values . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.1. IETF Standard Tags . . . . . . . . . . . . . . . . . . . 3 | 3.1. IETF Standard Tags . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.2. Vendor Tags . . . . . . . . . . . . . . . . . . . . . . . 3 | 3.2. Vendor Tags . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.3. User Tags . . . . . . . . . . . . . . . . . . . . . . . . 3 | 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 . . . . . . . . . . . . . . 4 | 4.1. Module Definition Association . . . . . . . . . . . . . . 5 | |||
| 4.2. Implementation Association . . . . . . . . . . . . . . . 4 | 4.2. Implementation Association . . . . . . . . . . . . . . . 5 | |||
| 4.3. Administrative Tagging . . . . . . . . . . . . . . . . . 4 | 4.3. Administrative Tagging . . . . . . . . . . . . . . . . . 5 | |||
| 5. Tags Module Structure . . . . . . . . . . . . . . . . . . . . 4 | 5. Tags Module Structure . . . . . . . . . . . . . . . . . . . . 5 | |||
| 5.1. Tags Module Tree . . . . . . . . . . . . . . . . . . . . 4 | 5.1. Tags Module Tree . . . . . . . . . . . . . . . . . . . . 5 | |||
| 5.2. Tags Module . . . . . . . . . . . . . . . . . . . . . . . 5 | 5.2. Tags Module . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 6. Other Classifications . . . . . . . . . . . . . . . . . . . . 7 | 6. Other Classifications . . . . . . . . . . . . . . . . . . . . 8 | |||
| 7. Guidelines to Model Writers . . . . . . . . . . . . . . . . . 7 | 7. Guidelines to Model Writers . . . . . . . . . . . . . . . . . 8 | |||
| 7.1. Define Standard Tags . . . . . . . . . . . . . . . . . . 7 | 7.1. Define Standard Tags . . . . . . . . . . . . . . . . . . 8 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 8.1. YANG Module Tag Prefix Registry . . . . . . . . . . . . . 8 | 8.1. YANG Module Tag Prefix Registry . . . . . . . . . . . . . 8 | |||
| 8.2. YANG Module IETF Tag Registry . . . . . . . . . . . . . . 8 | 8.2. YANG Module IETF Tag Registry . . . . . . . . . . . . . . 9 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 10 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 10 | 10.1. Normative References . . . . . . . . . . . . . . . . . . 10 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 10 | 10.2. Informative References . . . . . . . . . . . . . . . . . 11 | |||
| Appendix A. Example . . . . . . . . . . . . . . . . . . . . . . 11 | ||||
| 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). Tags can be usefully standardized, but they can | (e.g., #hashtags). One benefit of using tags for organization over a | |||
| also serve as a non-standardized mechanism available for users to | rigid structure is that it is more flexible and can more easily adapt | |||
| define themselves. Our solution provides for both cases allowing for | over time as technologies evolve. Tags can be usefully standardized, | |||
| the most flexibility. In particular, tags may be standardized as | but they can also serve as a non-standardized mechanism available for | |||
| well as assigned during module definition; assigned by | users to define themselves. This document provides a mechanism to | |||
| implementations; or dynamically defined and set by users. | define tags and associate them with YANG modules in a flexible | |||
| manner. 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 a YANG module [RFC6020] which provides a list | This document defines a YANG module [RFC6020] 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 [I-D.ietf-netmod-rfc6087bis]. | section updates [RFC8407]. | |||
| 1.1. Some possible use cases of YANG module tags | ||||
| During this documents progression there were requests for example | ||||
| uses of module tags. The following are a few example use cases for | ||||
| tags. This list is certainly not exhaustive. | ||||
| One example use of tags would be to help filter different discrete | ||||
| 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 | ||||
| the vendor modules supported by a device. | ||||
| Tags can also be used to help coordination when multiple semi- | ||||
| independent clients are interacting with the same devices. E.g., one | ||||
| management client could mark that some modules should not be used | ||||
| because they have not been verified to behave correctly, so that | ||||
| other management clients avoid querying the data associated with | ||||
| those modules. | ||||
| Tag classification is useful for users searching module repositories | ||||
| (e.g. YANG catalog). A query restricted to the 'ietf:routing' | ||||
| module tag could be used to return only the IETF YANG modules | ||||
| associated with routing. Without tags, a user would need to know the | ||||
| name of all the IETF routing protocol YANG modules. | ||||
| Future management protocol extensions could allow for filtering | ||||
| queries of configuration or operational state on a server based on | ||||
| tags. E.g., return all operational state related to system- | ||||
| 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 begin with a prefix indicating who owns their definition. | |||
| An IANA registry is used to support standardizing tag prefixes. | An IANA registry is used to support standardizing tag prefixes. | |||
| Currently 3 prefixes are defined with all others reserved. No | Currently 3 prefixes are defined with all others reserved. No | |||
| further structure is imposed by this document on the value following | further structure is imposed by this document on the value following | |||
| the standard prefix, and the value can contain any yang type 'string' | the standard prefix, and the value can contain any yang type 'string' | |||
| skipping to change at page 7, line 19 ¶ | skipping to change at page 8, line 4 ¶ | |||
| description | description | |||
| "The list of tags that should not be associated with this | "The list of tags that should not be associated with this | |||
| module. This user can remove (mask) tags by adding | module. This user can remove (mask) tags by adding | |||
| them to this list. It is not an error to add tags to this | them to this list. It is not an error to add tags to this | |||
| list that are not associated with the module."; | list that are not associated with the module."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 6. Other Classifications | 6. Other Classifications | |||
| It's worth noting that a different YANG module classification | It's worth noting that a different YANG module classification | |||
| document exists [RFC8199]. That document is classifying modules in | document exists [RFC8199]. That document is classifying modules in | |||
| only a logical manner and does not define tagging or any other | only a logical manner and does not define tagging or any other | |||
| mechanisms. It divides YANG modules into 2 categories (service or | mechanisms. It divides YANG modules into 2 categories (service or | |||
| element) and then into one of 3 origins: standard, vendor or user. | element) and then into one of 3 origins: standard, vendor or user. | |||
| It does provide a good way to discuss and identify modules in | It does provide a good way to discuss and identify modules in | |||
| general. This document defines standard tags to support [RFC8199] | general. This document defines standard tags to support [RFC8199] | |||
| style classification. | style classification. | |||
| 7. Guidelines to Model Writers | 7. Guidelines to Model Writers | |||
| This section updates [I-D.ietf-netmod-rfc6087bis]. | 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 can indicate using module-tag extension statements a set of | |||
| tags that are to be automatically associated with it (i.e., not added | tags that are to be automatically associated with it (i.e., not added | |||
| through configuration). | through configuration). | |||
| module example-module { | module example-module { | |||
| ... | ... | |||
| import module-tags { prefix tags; } | import module-tags { prefix tags; } | |||
| skipping to change at page 10, line 5 ¶ | skipping to change at page 10, line 35 ¶ | |||
| | | | | | | | | | | |||
| | ietf:signaling | A module representing | [This | | | ietf:signaling | A module representing | [This | | |||
| | | control plane signaling. | document] | | | | control plane signaling. | document] | | |||
| | | | | | | | | | | |||
| | ietf:lmp | A module representing a link | [This | | | ietf:lmp | A module representing a link | [This | | |||
| | | management protocol. | document] | | | | management protocol. | document] | | |||
| +------------------------+------------------------------+-----------+ | +------------------------+------------------------------+-----------+ | |||
| Table 1: IETF Module Tag Registry | Table 1: IETF Module Tag Registry | |||
| 9. References | 9. Acknowledgements | |||
| 9.1. Normative References | Special thanks to Robert Wilton for his help improving the | |||
| introduction and providing the example use cases. | ||||
| [I-D.ietf-netmod-rfc6087bis] | 10. References | |||
| Bierman, A., "Guidelines for Authors and Reviewers of YANG | ||||
| Data Model Documents", draft-ietf-netmod-rfc6087bis-20 | 10.1. Normative References | |||
| (work in progress), March 2018. | ||||
| [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>. | |||
| skipping to change at page 10, line 37 ¶ | skipping to change at page 11, line 23 ¶ | |||
| <https://www.rfc-editor.org/info/rfc6020>. | <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 | [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>. | |||
| 9.2. Informative References | [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>. | ||||
| 10.2. Informative References | ||||
| [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 | ||||
| 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 | ||||
| are imagined. | ||||
| { | ||||
| "ietf-module-tags:module-tags": { | ||||
| "module": [ | ||||
| { | ||||
| "name": "ietf-bfd", | ||||
| "tag": [ | ||||
| "ietf:protocol", | ||||
| "ietf:oam", | ||||
| "ietf:rfc8199-element", | ||||
| "ietf:rfc8199-standard" | ||||
| ] | ||||
| }, | ||||
| { | ||||
| "name": "ietf-isis", | ||||
| "tag": [ | ||||
| "ietf:protocol", | ||||
| "ietf:rfc8199-element", | ||||
| "ietf:rfc8199-standard", | ||||
| "ietf:routing" | ||||
| ] | ||||
| }, | ||||
| { | ||||
| "name": "ietf-ssh-server", | ||||
| "tag": [ | ||||
| "ietf:protocol", | ||||
| "ietf:rfc8199-element", | ||||
| "ietf:rfc8199-standard", | ||||
| "ietf:system-management" | ||||
| ] | ||||
| } | ||||
| ] | ||||
| } | ||||
| } | ||||
| Authors' Addresses | Authors' Addresses | |||
| Christan Hopps | Christan Hopps | |||
| Deutsche Telekom | LabN Consulting, L.L.C. | |||
| Email: chopps@chopps.org | Email: chopps@chopps.org | |||
| Lou Berger | Lou Berger | |||
| LabN Consulting, L.L.C. | LabN Consulting, L.L.C. | |||
| Email: lberger@labn.net | Email: lberger@labn.net | |||
| Dean Bogdanovic | Dean Bogdanovic | |||
| Volta Networks | ||||
| Email: ivandean@gmail.com | Email: ivandean@gmail.com | |||
| End of changes. 24 change blocks. | ||||
| 45 lines changed or deleted | 125 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/ | ||||