| < draft-ietf-core-sid-13.txt | draft-ietf-core-sid-14.txt > | |||
|---|---|---|---|---|
| Internet Engineering Task Force M. Veillette, Ed. | Internet Engineering Task Force M. Veillette, Ed. | |||
| Internet-Draft Trilliant Networks Inc. | Internet-Draft Trilliant Networks Inc. | |||
| Intended status: Standards Track A. Pelov, Ed. | Intended status: Standards Track A. Pelov, Ed. | |||
| Expires: December 6, 2020 I. Petrov, Ed. | Expires: January 5, 2021 I. Petrov, Ed. | |||
| Acklio | Acklio | |||
| June 04, 2020 | July 04, 2020 | |||
| YANG Schema Item iDentifier (SID) | YANG Schema Item iDentifier (YANG SID) | |||
| draft-ietf-core-sid-13 | draft-ietf-core-sid-14 | |||
| Abstract | Abstract | |||
| YANG Schema Item iDentifiers (SID) are globally unique 63-bit | YANG Schema Item iDentifiers (YANG SID) are globally unique 63-bit | |||
| unsigned integers used to identify YANG items. This document defines | unsigned integers used to identify YANG items. This document defines | |||
| the semantics, the registration, and assignment processes of SIDs. | the semantics, the registration, and assignment processes of YANG | |||
| To enable the implementation of these processes, this document also | SIDs. To enable the implementation of these processes, this document | |||
| defines a file format used to persist and publish assigned SIDs. | also defines a file format used to persist and publish assigned YANG | |||
| SIDs. | ||||
| 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 December 6, 2020. | This Internet-Draft will expire on January 5, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 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 . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Terminology and Notation . . . . . . . . . . . . . . . . . . 4 | 2. Terminology and Notation . . . . . . . . . . . . . . . . . . 4 | |||
| 3. ".sid" file lifecycle . . . . . . . . . . . . . . . . . . . . 5 | 3. ".sid" file lifecycle . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4. ".sid" file format . . . . . . . . . . . . . . . . . . . . . 5 | 4. ".sid" file format . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 5. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | 5. Content-Types . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | |||
| 6.1. YANG Namespace Registration . . . . . . . . . . . . . . . 12 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 6.2. Register ".sid" File Format Module . . . . . . . . . . . 12 | 7.1. YANG Namespace Registration . . . . . . . . . . . . . . . 13 | |||
| 6.3. Create new IANA Registry: "SID Mega-Range" registry . . . 13 | 7.2. Register ".sid" File Format Module . . . . . . . . . . . 13 | |||
| 6.3.1. Structure . . . . . . . . . . . . . . . . . . . . . . 13 | 7.3. CoAP Content-Formats Registry . . . . . . . . . . . . . . 13 | |||
| 6.3.2. Allocation policy . . . . . . . . . . . . . . . . . . 13 | 7.4. Create new IANA Registry: "YANG SID Mega-Range" registry 14 | |||
| 6.3.2.1. First allocation . . . . . . . . . . . . . . . . 14 | 7.4.1. Structure . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 6.3.2.2. Consecutive allocations . . . . . . . . . . . . . 14 | 7.4.2. Allocation policy . . . . . . . . . . . . . . . . . . 14 | |||
| 6.3.3. Initial contents of the Registry . . . . . . . . . . 14 | 7.4.2.1. First allocation . . . . . . . . . . . . . . . . 15 | |||
| 6.4. Create a new IANA Registry: IETF SID Range Registry | 7.4.2.2. Consecutive allocations . . . . . . . . . . . . . 15 | |||
| (managed by IANA) . . . . . . . . . . . . . . . . . . . . 14 | 7.4.3. Initial contents of the Registry . . . . . . . . . . 15 | |||
| 6.4.1. Structure . . . . . . . . . . . . . . . . . . . . . . 15 | 7.5. Create a new IANA Registry: IETF YANG SID Range Registry | |||
| 6.4.2. Allocation policy . . . . . . . . . . . . . . . . . . 15 | (managed by IANA) . . . . . . . . . . . . . . . . . . . . 15 | |||
| 6.4.3. Initial contents of the registry . . . . . . . . . . 16 | 7.5.1. Structure . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 6.5. Create new IANA Registry: "IETF SID Registry" . . . . . . 17 | 7.5.2. Allocation policy . . . . . . . . . . . . . . . . . . 16 | |||
| 6.5.1. Structure . . . . . . . . . . . . . . . . . . . . . . 17 | 7.5.3. Initial contents of the registry . . . . . . . . . . 17 | |||
| 6.5.2. Allocation policy . . . . . . . . . . . . . . . . . . 18 | 7.6. Create new IANA Registry: "IETF YANG SID Registry" . . . 18 | |||
| 6.5.3. Recursive Allocation of SID Range at Document | 7.6.1. Structure . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| Adoption . . . . . . . . . . . . . . . . . . . . . . 18 | 7.6.2. Allocation policy . . . . . . . . . . . . . . . . . . 19 | |||
| 6.5.4. Initial contents of the registry . . . . . . . . . . 20 | 7.6.3. Recursive Allocation of YANG SID Range at Document | |||
| 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 20 | Adoption . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 7.6.4. Initial contents of the registry . . . . . . . . . . 21 | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . 20 | 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 21 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| Appendix A. ".sid" file example . . . . . . . . . . . . . . . . 22 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 21 | |||
| Appendix B. SID auto generation . . . . . . . . . . . . . . . . 31 | 9.2. Informative References . . . . . . . . . . . . . . . . . 22 | |||
| Appendix C. ".sid" file lifecycle . . . . . . . . . . . . . . . 32 | Appendix A. ".sid" file example . . . . . . . . . . . . . . . . 23 | |||
| C.1. ".sid" File Creation . . . . . . . . . . . . . . . . . . 33 | Appendix B. SID auto generation . . . . . . . . . . . . . . . . 33 | |||
| C.2. ".sid" File Update . . . . . . . . . . . . . . . . . . . 34 | Appendix C. ".sid" file lifecycle . . . . . . . . . . . . . . . 34 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35 | C.1. ".sid" File Creation . . . . . . . . . . . . . . . . . . 34 | |||
| C.2. ".sid" File Update . . . . . . . . . . . . . . . . . . . 35 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 36 | ||||
| 1. Introduction | 1. Introduction | |||
| Some of the items defined in YANG [RFC7950] require the use of a | Some of the items defined in YANG [RFC7950] require the use of a | |||
| unique identifier. In both NETCONF [RFC6241] and RESTCONF [RFC8040], | unique identifier. In both NETCONF [RFC6241] and RESTCONF [RFC8040], | |||
| these identifiers are implemented using names. To allow the | these identifiers are implemented using names. To allow the | |||
| implementation of data models defined in YANG in constrained devices | implementation of data models defined in YANG in constrained devices | |||
| and constrained networks, a more compact method to identify YANG | and constrained networks, a more compact method to identify YANG | |||
| items is required. This compact identifier, called SID, is encoded | items is required. This compact identifier, called YANG SID or | |||
| simply SID in this document and when the context is clear, is encoded | ||||
| using a 63-bit unsigned integer. The limitation to 63-bit unsigned | using a 63-bit unsigned integer. The limitation to 63-bit unsigned | |||
| integers allows SIDs to be manipulated more easily on platforms that | integers allows SIDs to be manipulated more easily on platforms that | |||
| might otherwise lack native 64-bit unsigned arithmetic. The loss of | might otherwise lack native 64-bit unsigned arithmetic. The loss of | |||
| a single bit of range is not significant given the size of the | a single bit of range is not significant given the size of the | |||
| remaining space. | remaining space. | |||
| The following items are identified using SIDs: | The following items are identified using SIDs: | |||
| o identities | o identities | |||
| skipping to change at page 4, line 40 ¶ | skipping to change at page 4, line 47 ¶ | |||
| The following term is defined in [RFC8040]: | The following term is defined in [RFC8040]: | |||
| o yang-data extension | o yang-data extension | |||
| This specification also makes use of the following terminology: | This specification also makes use of the following terminology: | |||
| o item: A schema node, an identity, a module, a submodule or a | o item: A schema node, an identity, a module, a submodule or a | |||
| feature defined using the YANG modeling language. | feature defined using the YANG modeling language. | |||
| o path: A path is a string that identifies a schema node within the | o schema-node path: A schema-node path is a string that identifies a | |||
| schema tree. A path consists of the list of consecutive schema | schema node within the schema tree. A path consists of the list | |||
| node identifier(s) separated by slashes ("/"). Schema node | of consecutive schema node identifier(s) separated by slashes | |||
| identifier(s) are always listed from the top-level schema node up | ("/"). Schema node identifier(s) are always listed from the top- | |||
| to the targeted schema node and could contain namespace | level schema node up to the targeted schema node and could contain | |||
| information. (e.g. "/ietf-system:system-state/clock/current- | namespace information. (e.g. "/ietf-system:system-state/clock/ | |||
| datetime") | current-datetime") | |||
| o YANG Schema Item iDentifier (SID): Unsigned integer used to | o Namespace-qualified form - a schema node identifier is prefixed | |||
| identify different YANG items. | with the name of the module in which the schema node is defined, | |||
| separated from the schema node identifier by the colon character | ||||
| (":"). | ||||
| o YANG Schema Item iDentifier (YANG SID or simply SID): Unsigned | ||||
| integer used to identify different YANG items. | ||||
| 3. ".sid" file lifecycle | 3. ".sid" file lifecycle | |||
| YANG is a language designed to model data accessed using one of the | YANG is a language designed to model data accessed using one of the | |||
| compatible protocols (e.g. NETCONF [RFC6241], RESTCONF [RFC8040] and | compatible protocols (e.g. NETCONF [RFC6241], RESTCONF [RFC8040] and | |||
| CoMI [I-D.ietf-core-comi]). A YANG module defines hierarchies of | CORECONF [I-D.ietf-core-comi]). A YANG module defines hierarchies of | |||
| data, including configuration, state data, RPCs, actions and | data, including configuration, state data, RPCs, actions and | |||
| notifications. | notifications. | |||
| Many YANG modules are not created in the context of constrained | Many YANG modules are not created in the context of constrained | |||
| applications. YANG modules can be implemented using NETCONF | applications. YANG modules can be implemented using NETCONF | |||
| [RFC6241] or RESTCONF [RFC8040] without the need to assign SIDs. | [RFC6241] or RESTCONF [RFC8040] without the need to assign SIDs. | |||
| As needed, authors of YANG modules can assign SIDs to their YANG | As needed, authors of YANG modules can assign SIDs to their YANG | |||
| modules. In order to do that, they should first obtain a SID range | modules. In order to do that, they should first obtain a SID range | |||
| from a registry and use that range to assign or generate SIDs to | from a registry and use that range to assign or generate SIDs to | |||
| skipping to change at page 7, line 40 ¶ | skipping to change at page 7, line 49 ¶ | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here. | they appear in all capitals, as shown here. | |||
| This module defines the structure of the .sid files. | This module defines the structure of the .sid files. | |||
| Each .sid file contains the mapping between the different | Each .sid file contains the mapping between the different | |||
| string identifiers defined by a YANG module and a | string identifiers defined by a YANG module and a | |||
| corresponding numeric value called SID."; | corresponding numeric value called YANG SID."; | |||
| revision 2020-02-05 { | revision 2020-02-05 { | |||
| description | description | |||
| "Initial revision."; | "Initial revision."; | |||
| reference | reference | |||
| "[I-D.ietf-core-sid] YANG Schema Item iDentifier (SID)"; | "[I-D.ietf-core-sid] YANG Schema Item iDentifier (YANG SID)"; | |||
| } | } | |||
| typedef revision-identifier { | typedef revision-identifier { | |||
| type string { | type string { | |||
| pattern '\d{4}-\d{2}-\d{2}'; | pattern '\d{4}-\d{2}-\d{2}'; | |||
| } | } | |||
| description | description | |||
| "Represents a date in YYYY-MM-DD format."; | "Represents a date in YYYY-MM-DD format."; | |||
| } | } | |||
| skipping to change at page 8, line 23 ¶ | skipping to change at page 8, line 33 ¶ | |||
| "Represents the version of a .sid file."; | "Represents the version of a .sid file."; | |||
| } | } | |||
| typedef sid { | typedef sid { | |||
| type uint64 { | type uint64 { | |||
| range "0..9223372036854775807"; | range "0..9223372036854775807"; | |||
| } | } | |||
| description | description | |||
| "YANG Schema Item iDentifier"; | "YANG Schema Item iDentifier"; | |||
| reference | reference | |||
| "[I-D.ietf-core-sid] YANG Schema Item iDentifier (SID)"; | "[I-D.ietf-core-sid] YANG Schema Item iDentifier (YANG SID)"; | |||
| } | } | |||
| typedef schema-node-path { | typedef schema-node-path { | |||
| type string { | type string { | |||
| pattern | pattern | |||
| '/[a-zA-Z_][a-zA-Z0-9\-_.]*:[a-zA-Z_][a-zA-Z0-9\-_.]*' + | '/[a-zA-Z_][a-zA-Z0-9\-_.]*:[a-zA-Z_][a-zA-Z0-9\-_.]*' + | |||
| '(/[a-zA-Z_][a-zA-Z0-9\-_.]*(:[a-zA-Z_][a-zA-Z0-9\-_.]*)?)*'; | '(/[a-zA-Z_][a-zA-Z0-9\-_.]*(:[a-zA-Z_][a-zA-Z0-9\-_.]*)?)*'; | |||
| } | } | |||
| description | description | |||
| "A schema-node path string for use in the | "A schema-node path is an absolute YANG schema node identifier as | |||
| SID registry. This string format follows the rules | defined by the YANG ABNF rule absolute-schema-nodeid, except | |||
| for an instance-identifier, as defined in RFC 7951, | that module names are used instead of prefixes. | |||
| except that no predicates are allowed. | ||||
| This format is intended to support the YANG 1.1 ABNF | This string additionally follows the following rules: | |||
| for a schema node identifier, except module names | ||||
| are used instead of prefixes, as specified in RFC 7951."; | o The leftmost (top-level) data node name is always in the | |||
| namespace-qualified form. | ||||
| o Any subsequent schema node name is in the namespace-qualified form | ||||
| if the node is defined in a module other than its parent node, and | ||||
| the simple form is used otherwise. No predicates are allowed."; | ||||
| reference | reference | |||
| "RFC 7950, The YANG 1.1 Data Modeling Language; | "RFC 7950, The YANG 1.1 Data Modeling Language; | |||
| Section 6.5: Schema Node Identifier; | Section 6.5: Schema Node Identifier;"; | |||
| RFC 7951, JSON Encoding of YANG Data; | ||||
| Section 6.11: The instance-identifier type"; | ||||
| } | } | |||
| rc:yang-data sid-file { | rc:yang-data sid-file { | |||
| uses sid-file; | uses sid-file; | |||
| } | } | |||
| grouping sid-file { | grouping sid-file { | |||
| description "A grouping that contains a YANG container representing the | description "A grouping that contains a YANG container representing the | |||
| file structure of a .sid files."; | file structure of a .sid files."; | |||
| container sid-file { | container sid-file { | |||
| description | description | |||
| "A Wrapper container that together with the rc:yang-data extension | "A Wrapper container that together with the rc:yang-data extension | |||
| marks the YANG data structures inside as not being intended to be | marks the YANG data structures inside as not being intended to be | |||
| implemented as part of a configuration datastore or as an operational | implemented as part of a configuration datastore or as an operational | |||
| state within the server."; | state within the server."; | |||
| skipping to change at page 10, line 24 ¶ | skipping to change at page 10, line 34 ¶ | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Revision of the YANG module, dependency of 'module-name', for which | "Revision of the YANG module, dependency of 'module-name', for which | |||
| revision information is provided."; | revision information is provided."; | |||
| } | } | |||
| } | } | |||
| list assigment-ranges { | list assigment-ranges { | |||
| key "entry-point"; | key "entry-point"; | |||
| description | description | |||
| "SID range(s) allocated to the YANG module identified by | "YANG SID range(s) allocated to the YANG module identified by | |||
| 'module-name' and 'module-revision'. | 'module-name' and 'module-revision'. | |||
| - The SID range first available value is entry-point and the the last | - The YANG SID range first available value is entry-point and the the | |||
| available value in the range is (entry-point + size - 1). | last available value in the range is (entry-point + size - 1). | |||
| - The SID ranges specified by all assignment-rages MUST NOT overlap."; | - The YANG SID ranges specified by all assignment-rages MUST NOT | |||
| overlap."; | ||||
| leaf entry-point { | leaf entry-point { | |||
| type sid; | type sid; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Lowest SID available for assignment."; | "Lowest YANG SID available for assignment."; | |||
| } | } | |||
| leaf size { | leaf size { | |||
| type uint64; | type uint64; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Number of SIDs available for assignment."; | "Number of YANG SIDs available for assignment."; | |||
| } | } | |||
| } | } | |||
| list items { | list items { | |||
| key "namespace identifier"; | key "namespace identifier"; | |||
| description | description | |||
| "Each entry within this list defined the mapping between | "Each entry within this list defined the mapping between | |||
| a YANG item string identifier and a SID. This list MUST | a YANG item string identifier and a YANG SID. This list MUST | |||
| include a mapping entry for each YANG item defined by | include a mapping entry for each YANG item defined by | |||
| the YANG module identified by 'module-name' and | the YANG module identified by 'module-name' and | |||
| 'module-revision'."; | 'module-revision'."; | |||
| leaf namespace { | leaf namespace { | |||
| type enumeration { | type enumeration { | |||
| enum module { | enum module { | |||
| value 0; | value 0; | |||
| description | description | |||
| "All module and submodule names share the same | "All module and submodule names share the same | |||
| skipping to change at page 12, line 11 ¶ | skipping to change at page 12, line 23 ¶ | |||
| If the corresponding 'namespace' field is 'data', | If the corresponding 'namespace' field is 'data', | |||
| then this field MUST contain a valid schema node | then this field MUST contain a valid schema node | |||
| path."; | path."; | |||
| } | } | |||
| leaf sid { | leaf sid { | |||
| type sid; | type sid; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "SID assigned to the YANG item for this mapping entry."; | "YANG SID assigned to the YANG item for this mapping entry."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 5. Security Considerations | 5. Content-Types | |||
| The following Content-Type is defined: | ||||
| application/yang-data+cbor; id=sid: This Content-Type represents a | ||||
| CBOR YANG document containing one or multiple data node values. | ||||
| Each data node is identified by its associated SID. | ||||
| FORMAT: CBOR map of SID, instance-value | ||||
| The message payload of Content-Type 'application/yang-data+cbor' | ||||
| is encoded using a CBOR map. Each entry within the CBOR map | ||||
| contains the data node identifier (i.e. SID) and the associated | ||||
| instance-value. Instance-values are encoded using the rules | ||||
| defined in [I-D.ietf-core-yang-cbor] section 4. | ||||
| 6. Security Considerations | ||||
| This document defines a new type of identifier used to encode data | This document defines a new type of identifier used to encode data | |||
| models defined in YANG [RFC7950]. As such, this identifier does not | models defined in YANG [RFC7950]. As such, this identifier does not | |||
| contribute to any new security issues in addition of those identified | contribute to any new security issues in addition of those identified | |||
| for the specific protocols or contexts for which it is used. | for the specific protocols or contexts for which it is used. | |||
| 6. IANA Considerations | 7. IANA Considerations | |||
| 6.1. YANG Namespace Registration | 7.1. YANG Namespace Registration | |||
| This document registers the following XML namespace URN in the "IETF | This document registers the following XML namespace URN in the "IETF | |||
| XML Registry", following the format defined in [RFC3688]: | XML Registry", following the format defined in [RFC3688]: | |||
| URI: please assign urn:ietf:params:xml:ns:yang:ietf-sid-file | URI: please assign urn:ietf:params:xml:ns:yang:ietf-sid-file | |||
| Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
| XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
| Reference: RFC XXXX | Reference: RFC XXXX | |||
| // RFC Ed.: please replace XXXX with RFC number and remove this note | // RFC Ed.: please replace XXXX with RFC number and remove this note | |||
| 6.2. Register ".sid" File Format Module | 7.2. Register ".sid" File Format Module | |||
| This document registers one YANG module in the "YANG Module Names" | This document registers one YANG module in the "YANG Module Names" | |||
| registry [RFC6020]: | registry [RFC6020]: | |||
| o name: ietf-sid-file | o name: ietf-sid-file | |||
| o namespace: urn:ietf:params:xml:ns:yang:ietf-sid-file | o namespace: urn:ietf:params:xml:ns:yang:ietf-sid-file | |||
| o prefix: sid | o prefix: sid | |||
| o reference: [[THISRFC]] | o reference: [[THISRFC]] | |||
| 6.3. Create new IANA Registry: "SID Mega-Range" registry | 7.3. CoAP Content-Formats Registry | |||
| The name of this registry is "SID Mega-Range". This registry is used | This document adds the following Content-Format to the "CoAP Content- | |||
| to record the delegation of the management of a block of SIDs to | Formats", within the "Constrained RESTful Environments (CoRE) | |||
| Parameters" registry. | ||||
| +---------------------------------+--------------+------+-----------+ | ||||
| | Media Type | Content | ID | Reference | | ||||
| | | Coding | | | | ||||
| +---------------------------------+--------------+------+-----------+ | ||||
| | application/yang-data+cbor; | | TBD1 | RFC XXXX | | ||||
| | id=sid | | | | | ||||
| +---------------------------------+--------------+------+-----------+ | ||||
| // RFC Ed.: replace TBD1 with assigned IDs and remove this note. // | ||||
| RFC Ed.: replace RFC XXXX with this RFC number and remove this note. | ||||
| 7.4. Create new IANA Registry: "YANG SID Mega-Range" registry | ||||
| The name of this registry is "YANG SID Mega-Range". This registry is | ||||
| used to record the delegation of the management of a block of SIDs to | ||||
| third parties (such as SDOs or registrars). | third parties (such as SDOs or registrars). | |||
| 6.3.1. Structure | 7.4.1. Structure | |||
| Each entry in this registry must include: | Each entry in this registry must include: | |||
| o The entry point (first SID) of the registered SID block. | o The entry point (first SID) of the registered SID block. | |||
| o The size of the registered SID block. The size MUST be one | o The size of the registered SID block. The size MUST be one | |||
| million (1 000 000) SIDs. | million (1 000 000) SIDs. | |||
| o The contact information of the requesting organization including: | o The contact information of the requesting organization including: | |||
| skipping to change at page 13, line 36 ¶ | skipping to change at page 14, line 35 ¶ | |||
| * Organization name | * Organization name | |||
| * URL | * URL | |||
| The information associated to the Organization name should not be | The information associated to the Organization name should not be | |||
| publicly visible in the registry, but should be available. This | publicly visible in the registry, but should be available. This | |||
| information includes contact email and phone number and change | information includes contact email and phone number and change | |||
| controller email and phone number. | controller email and phone number. | |||
| 6.3.2. Allocation policy | 7.4.2. Allocation policy | |||
| The IANA policy for future additions to this registry is "Expert | The IANA policy for future additions to this registry is "Expert | |||
| Review" [RFC8126]. | Review" [RFC8126]. | |||
| An organization requesting to manage a SID Range (and thus have an | An organization requesting to manage a YANG SID Range (and thus have | |||
| entry in the SID Mega-Range Registry), must ensure the following | an entry in the YANG SID Mega-Range Registry), must ensure the | |||
| capacities: | following capacities: | |||
| o The capacity to manage and operate a SID Range Registry. A SID | o The capacity to manage and operate a YANG SID Range Registry. A | |||
| Range Registry MUST provide the following information for all SID | YANG SID Range Registry MUST provide the following information for | |||
| Ranges allocated by the Registry: | all YANG SID Ranges allocated by the Registry: | |||
| * Entry Point of allocated SID Range | * Entry Point of allocated YANG SID Range | |||
| * Size of allocated SID Range | * Size of allocated YANG SID Range | |||
| * Type: Public or Private | * Type: Public or Private | |||
| + Public Ranges MUST include at least a reference to the YANG | + Public Ranges MUST include at least a reference to the YANG | |||
| module and ".sid" files for that SID Range. | module and ".sid" files for that YANG SID Range. | |||
| + Private Ranges MUST be marked as "Private" | + Private Ranges MUST be marked as "Private" | |||
| o A Policy of allocation, which clearly identifies if the SID Range | o A Policy of allocation, which clearly identifies if the YANG SID | |||
| allocations would be Private, Public or Both. | Range allocations would be Private, Public or Both. | |||
| o Technical capacity to ensure the sustained operation of the | o Technical capacity to ensure the sustained operation of the | |||
| registry for a period of at least 5 years. If Private | registry for a period of at least 5 years. If Private | |||
| Registrations are allowed, the period must be of at least 10 | Registrations are allowed, the period must be of at least 10 | |||
| years. | years. | |||
| 6.3.2.1. First allocation | 7.4.2.1. First allocation | |||
| For a first allocation to be provided, the requesting organization | For a first allocation to be provided, the requesting organization | |||
| must demonstrate a functional registry infrastructure. | must demonstrate a functional registry infrastructure. | |||
| 6.3.2.2. Consecutive allocations | 7.4.2.2. Consecutive allocations | |||
| On subsequent allocation request(s), the organization must | On subsequent allocation request(s), the organization must | |||
| demonstrate the exhaustion of the prior range. These conditions need | demonstrate the exhaustion of the prior range. These conditions need | |||
| to be asserted by the assigned expert(s). | to be asserted by the assigned expert(s). | |||
| If that extra-allocation is done within 3 years from the last | If that extra-allocation is done within 3 years from the last | |||
| allocation, the experts need to discuss this request on the CORE | allocation, the experts need to discuss this request on the CORE | |||
| working group mailing list and consensus needs to be obtained before | working group mailing list and consensus needs to be obtained before | |||
| allocating a new Mega-Range. | allocating a new Mega-Range. | |||
| 6.3.3. Initial contents of the Registry | 7.4.3. Initial contents of the Registry | |||
| The initial entry in this registry is allocated to IANA: | The initial entry in this registry is allocated to IANA: | |||
| +-------------+---------+------------+-------------------+----------+ | +-------------+---------+------------+-------------------+----------+ | |||
| | Entry Point | Size | Allocation | Organization name | URL | | | Entry Point | Size | Allocation | Organization name | URL | | |||
| +-------------+---------+------------+-------------------+----------+ | +-------------+---------+------------+-------------------+----------+ | |||
| | 0 | 1000000 | Public | IANA | iana.org | | | 0 | 1000000 | Public | IANA | iana.org | | |||
| +-------------+---------+------------+-------------------+----------+ | +-------------+---------+------------+-------------------+----------+ | |||
| 6.4. Create a new IANA Registry: IETF SID Range Registry (managed by | 7.5. Create a new IANA Registry: IETF YANG SID Range Registry (managed | |||
| IANA) | by IANA) | |||
| 6.4.1. Structure | 7.5.1. Structure | |||
| Each entry in this registry must include: | Each entry in this registry must include: | |||
| o The SID range entry point. | o The SID range entry point. | |||
| o The SID range size. | o The SID range size. | |||
| o The YANG module name. | o The YANG module name. | |||
| o Document reference. | o Document reference. | |||
| 6.4.2. Allocation policy | 7.5.2. Allocation policy | |||
| The first million SIDs assigned to IANA is sub-divided as follows: | The first million SIDs assigned to IANA is sub-divided as follows: | |||
| o The range of 0 to 999 (size 1000) is "Reserved" as defined in | o The range of 0 to 999 (size 1000) is "Reserved" as defined in | |||
| [RFC8126]. | [RFC8126]. | |||
| o The range of 1000 to 59,999 (size 59,000) is reserved for YANG | o The range of 1000 to 59,999 (size 59,000) is reserved for YANG | |||
| modules defined in RFCs. | modules defined in RFCs. | |||
| * The IANA policy for additions to this registry is either: | * The IANA policy for additions to this registry is either: | |||
| skipping to change at page 16, line 36 ¶ | skipping to change at page 17, line 36 ¶ | |||
| in. | in. | |||
| In case a SID range is required before publishing the RFC due to | In case a SID range is required before publishing the RFC due to | |||
| implementations needing stable SID values, early allocation as | implementations needing stable SID values, early allocation as | |||
| defined in [RFC7120] can be employed. As specified in section 4.6 of | defined in [RFC7120] can be employed. As specified in section 4.6 of | |||
| [RFC8126], RFCs and by extension documents that are expected to | [RFC8126], RFCs and by extension documents that are expected to | |||
| become an RFC fulfill the requirement for "Specification Required" | become an RFC fulfill the requirement for "Specification Required" | |||
| stated in section 2 of [RFC7120], which allows for the early | stated in section 2 of [RFC7120], which allows for the early | |||
| allocation process to be employed. | allocation process to be employed. | |||
| 6.4.3. Initial contents of the registry | 7.5.3. Initial contents of the registry | |||
| Initial entries in this registry are as follows: | Initial entries in this registry are as follows: | |||
| +-------+------+---------------------------+------------------------+ | +-------+------+---------------------------+------------------------+ | |||
| | Entry | Size | Module name | Document reference | | | Entry | Size | Module name | Document reference | | |||
| | Point | | | | | | Point | | | | | |||
| +-------+------+---------------------------+------------------------+ | +-------+------+---------------------------+------------------------+ | |||
| | 1000 | 100 | ietf-comi | [I-D.ietf-core-comi] | | | 1000 | 100 | ietf-coreconf | [I-D.ietf-core-comi] | | |||
| | 1100 | 50 | ietf-yang-types | [RFC6991] | | | 1100 | 50 | ietf-yang-types | [RFC6991] | | |||
| | 1150 | 50 | ietf-inet-types | [RFC6991] | | | 1150 | 50 | ietf-inet-types | [RFC6991] | | |||
| | 1200 | 50 | iana-crypt-hash | [RFC7317] | | | 1200 | 50 | iana-crypt-hash | [RFC7317] | | |||
| | 1250 | 50 | ietf-netconf-acm | [RFC8341] | | | 1250 | 50 | ietf-netconf-acm | [RFC8341] | | |||
| | 1300 | 50 | ietf-sid-file | RFCXXXX | | | 1300 | 50 | ietf-sid-file | RFCXXXX | | |||
| | 1500 | 100 | ietf-interfaces | [RFC8343] | | | 1500 | 100 | ietf-interfaces | [RFC8343] | | |||
| | 1600 | 100 | ietf-ip | [RFC8344] | | | 1600 | 100 | ietf-ip | [RFC8344] | | |||
| | 1700 | 100 | ietf-system | [RFC7317] | | | 1700 | 100 | ietf-system | [RFC7317] | | |||
| | 1800 | 400 | iana-if-type | [RFC7224] | | | 1800 | 400 | iana-if-type | [RFC7224] | | |||
| | 2400 | 50 | ietf-voucher | [RFC8366] | | | 2400 | 50 | ietf-voucher | [RFC8366] | | |||
| skipping to change at page 17, line 33 ¶ | skipping to change at page 18, line 33 ¶ | |||
| | | | request | ained-voucher] | | | | | request | ained-voucher] | | |||
| +-------+------+---------------------------+------------------------+ | +-------+------+---------------------------+------------------------+ | |||
| // RFC Ed.: replace XXXX with RFC number assigned to this draft. | // RFC Ed.: replace XXXX with RFC number assigned to this draft. | |||
| For allocation, RFC publication of the YANG module is required as per | For allocation, RFC publication of the YANG module is required as per | |||
| [RFC8126]. The YANG module must be registered in the "YANG module | [RFC8126]. The YANG module must be registered in the "YANG module | |||
| Name" registry according to the rules specified in section 14 of | Name" registry according to the rules specified in section 14 of | |||
| [RFC6020]. | [RFC6020]. | |||
| 6.5. Create new IANA Registry: "IETF SID Registry" | 7.6. Create new IANA Registry: "IETF YANG SID Registry" | |||
| The name of this registry is "IETF SID Registry". This registry is | The name of this registry is "IETF YANG SID Registry". This registry | |||
| used to record the allocation of SIDs for individual YANG module | is used to record the allocation of SIDs for individual YANG module | |||
| items. | items. | |||
| 6.5.1. Structure | 7.6.1. Structure | |||
| Each entry in this registry must include: | Each entry in this registry must include: | |||
| o The YANG module name. This module name must be present in the | o The YANG module name. This module name must be present in the | |||
| "Name" column of the "YANG Module Names" registry. | "Name" column of the "YANG Module Names" registry. | |||
| o A link to the associated ".yang" file. This file link must be | o A link to the associated ".yang" file. This file link must be | |||
| present in the "File" column of the "YANG Module Names" registry. | present in the "File" column of the "YANG Module Names" registry. | |||
| o The link to the ".sid" file which defines the allocation. The | o The link to the ".sid" file which defines the allocation. The | |||
| ".sid" file is stored by IANA. | ".sid" file is stored by IANA. | |||
| o The number of actually allocated SIDs in the ".sid" file. | o The number of actually allocated SIDs in the ".sid" file. | |||
| 6.5.2. Allocation policy | 7.6.2. Allocation policy | |||
| The allocation policy is Expert review. The Expert MUST ensure that | The allocation policy is Expert review. The Expert MUST ensure that | |||
| the following conditions are met: | the following conditions are met: | |||
| o The ".sid" file has a valid structure: | o The ".sid" file has a valid structure: | |||
| * The ".sid" file MUST be a valid JSON file following the | * The ".sid" file MUST be a valid JSON file following the | |||
| structure of the module defined in RFCXXXX (RFC Ed: replace XXX | structure of the module defined in RFCXXXX (RFC Ed: replace XXX | |||
| with RFC number assigned to this draft). | with RFC number assigned to this draft). | |||
| o The ".sid" file allocates individual SIDs ONLY in the SID Ranges | o The ".sid" file allocates individual SIDs ONLY in the YANG SID | |||
| for this YANG module (as allocated in the IETF SID Range | Ranges for this YANG module (as allocated in the IETF YANG SID | |||
| Registry): | Range Registry): | |||
| * All SIDs in this ".sid" file MUST be within the ranges | * All SIDs in this ".sid" file MUST be within the ranges | |||
| allocated to this YANG module in the "IETF SID Range Registry". | allocated to this YANG module in the "IETF YANG SID Range | |||
| Registry". | ||||
| o If another ".sid" file has already allocated SIDs for this YANG | o If another ".sid" file has already allocated SIDs for this YANG | |||
| module (e.g. for older or newer versions of the YANG module), the | module (e.g. for older or newer versions of the YANG module), the | |||
| YANG items are assigned the same SIDs as in the other ".sid" file. | YANG items are assigned the same SIDs as in the other ".sid" file. | |||
| o If there is an older version of the ".sid" file, all allocated | o If there is an older version of the ".sid" file, all allocated | |||
| SIDs from that version are still present in the current version of | SIDs from that version are still present in the current version of | |||
| the ".sid" file. | the ".sid" file. | |||
| 6.5.3. Recursive Allocation of SID Range at Document Adoption | 7.6.3. Recursive Allocation of YANG SID Range at Document Adoption | |||
| Due to the difficulty in changing SID values during IETF document | Due to the difficulty in changing SID values during IETF document | |||
| processing, it is expected that most documents will ask for SID | processing, it is expected that most documents will ask for SID | |||
| allocations using Early Allocations [RFC7120]. The details of the | allocations using Early Allocations [RFC7120]. The details of the | |||
| Early Allocation should be included in any Working Group Adoption | Early Allocation should be included in any Working Group Adoption | |||
| call. Prior to Working Group Adoption, an internet draft authors can | call. Prior to Working Group Adoption, an internet draft authors can | |||
| use the experimental SID range (as per Section 6.4.2) for their SIDs | use the experimental SID range (as per Section 7.5.2) for their SIDs | |||
| allocations or other values that do not create ambiguity with other | allocations or other values that do not create ambiguity with other | |||
| SID uses (for example they can use a range that comes from a non-IANA | SID uses (for example they can use a range that comes from a non-IANA | |||
| managed "SID Mega-Range" registry). | managed "YANG SID Mega-Range" registry). | |||
| After Working Group Adoption, any modification of a ".sid" file is | After Working Group Adoption, any modification of a ".sid" file is | |||
| expected to be discussed on the mailing list of the appropriate | expected to be discussed on the mailing list of the appropriate | |||
| Working Groups. Specific attention should be paid to implementers' | Working Groups. Specific attention should be paid to implementers' | |||
| opinion after Working Group Last Call if a SID value is to change its | opinion after Working Group Last Call if a SID value is to change its | |||
| meaning. In all cases, a ".sid" file and the SIDs associated with it | meaning. In all cases, a ".sid" file and the SIDs associated with it | |||
| are subject to change before the publication of an internet draft as | are subject to change before the publication of an internet draft as | |||
| an RFC. | an RFC. | |||
| During the early use of SIDs, many existing, previously published | During the early use of SIDs, many existing, previously published | |||
| skipping to change at page 20, line 22 ¶ | skipping to change at page 21, line 22 ¶ | |||
| the publication of other documents. | the publication of other documents. | |||
| [RFC7120] also says: | [RFC7120] also says: | |||
| Note that if a document is submitted for review to the IESG and at | Note that if a document is submitted for review to the IESG and at | |||
| the time of submission some early allocations are valid (not | the time of submission some early allocations are valid (not | |||
| expired), these allocations should not be expired while the document | expired), these allocations should not be expired while the document | |||
| is under IESG consideration or waiting in the RFC Editor's queue | is under IESG consideration or waiting in the RFC Editor's queue | |||
| after approval by the IESG. | after approval by the IESG. | |||
| 6.5.4. Initial contents of the registry | 7.6.4. Initial contents of the registry | |||
| None. | None. | |||
| 7. Acknowledgments | 8. Acknowledgments | |||
| The authors would like to thank Andy Bierman, Carsten Bormann, | The authors would like to thank Andy Bierman, Carsten Bormann, | |||
| Michael Richardson, Abhinav Somaraju, Peter van der Stok, Laurent | Michael Richardson, Abhinav Somaraju, Peter van der Stok, Laurent | |||
| Toutain and Randy Turner for their help during the development of | Toutain and Randy Turner for their help during the development of | |||
| this document and their useful comments during the review process. | this document and their useful comments during the review process. | |||
| 8. References | 9. References | |||
| 8.1. Normative References | 9.1. Normative References | |||
| [I-D.ietf-core-yang-cbor] | ||||
| Veillette, M., Petrov, I., and A. Pelov, "CBOR Encoding of | ||||
| Data Modeled with YANG", draft-ietf-core-yang-cbor-12 | ||||
| (work in progress), March 2020. | ||||
| [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>. | |||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
| DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
| <https://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
| skipping to change at page 21, line 21 ¶ | skipping to change at page 22, line 29 ¶ | |||
| <https://www.rfc-editor.org/info/rfc7951>. | <https://www.rfc-editor.org/info/rfc7951>. | |||
| [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
| Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
| <https://www.rfc-editor.org/info/rfc8040>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
| [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>. | |||
| 8.2. Informative References | 9.2. Informative References | |||
| [I-D.ietf-anima-constrained-voucher] | [I-D.ietf-anima-constrained-voucher] | |||
| Richardson, M., Stok, P., and P. Kampanakis, "Constrained | Richardson, M., Stok, P., and P. Kampanakis, "Constrained | |||
| Voucher Artifacts for Bootstrapping Protocols", draft- | Voucher Artifacts for Bootstrapping Protocols", draft- | |||
| ietf-anima-constrained-voucher-07 (work in progress), | ietf-anima-constrained-voucher-07 (work in progress), | |||
| January 2020. | January 2020. | |||
| [I-D.ietf-core-comi] | [I-D.ietf-core-comi] | |||
| Veillette, M., Stok, P., Pelov, A., Bierman, A., and I. | Veillette, M., Stok, P., Pelov, A., Bierman, A., and I. | |||
| Petrov, "CoAP Management Interface", draft-ietf-core- | Petrov, "CoAP Management Interface", draft-ietf-core- | |||
| skipping to change at page 32, line 49 ¶ | skipping to change at page 34, line 10 ¶ | |||
| should either be 0 or should not be present. | should either be 0 or should not be present. | |||
| Note also that RPC or action "input" and "output" data nodes MUST | Note also that RPC or action "input" and "output" data nodes MUST | |||
| always be assigned SID even if they don't contain data nodes. The | always be assigned SID even if they don't contain data nodes. The | |||
| reason for this requirement is that other modules can augment the | reason for this requirement is that other modules can augment the | |||
| given module and those SIDs might be necessary. | given module and those SIDs might be necessary. | |||
| Appendix C. ".sid" file lifecycle | Appendix C. ".sid" file lifecycle | |||
| Before assigning SIDs to their YANG modules, YANG module authors must | Before assigning SIDs to their YANG modules, YANG module authors must | |||
| acquire a SID range from a "SID Range Registry". If the YANG module | acquire a SID range from a "YANG SID Range Registry". If the YANG | |||
| is part of an IETF draft or RFC, the SID range need to be acquired | module is part of an IETF draft or RFC, the SID range need to be | |||
| from the "IETF SID Range Registry" as defined in Section 6.4. For | acquired from the "IETF YANG SID Range Registry" as defined in | |||
| the other YANG modules, the authors can acquire a SID range from any | Section 7.5. For the other YANG modules, the authors can acquire a | |||
| "SID Range Registry" of their choice. | SID range from any "YANG SID Range Registry" of their choice. | |||
| Once the SID range is acquired, the owner can use it to generate | Once the SID range is acquired, the owner can use it to generate | |||
| ".sid" file/s for his YANG module/s. It is recommended to leave some | ".sid" file/s for his YANG module/s. It is recommended to leave some | |||
| unallocated SIDs following the allocated range in each ".sid" file in | unallocated SIDs following the allocated range in each ".sid" file in | |||
| order to allow better evolution of the YANG module in the future. | order to allow better evolution of the YANG module in the future. | |||
| Generation of ".sid" files should be performed using an automated | Generation of ".sid" files should be performed using an automated | |||
| tool. Note that ".sid" files can only be generated for YANG modules | tool. Note that ".sid" files can only be generated for YANG modules | |||
| and not for submodules. | and not for submodules. | |||
| C.1. ".sid" File Creation | C.1. ".sid" File Creation | |||
| End of changes. 63 change blocks. | ||||
| 125 lines changed or deleted | 176 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/ | ||||