| < draft-ietf-netmod-nmda-diff-05.txt | draft-ietf-netmod-nmda-diff-06.txt > | |||
|---|---|---|---|---|
| Network Working Group A. Clemm | Network Working Group A. Clemm | |||
| Internet-Draft Y. Qu | Internet-Draft Y. Qu | |||
| Intended status: Standards Track Futurewei | Intended status: Standards Track Futurewei | |||
| Expires: March 19, 2021 J. Tantsura | Expires: March 22, 2021 J. Tantsura | |||
| Apstra | Apstra | |||
| A. Bierman | A. Bierman | |||
| YumaWorks | YumaWorks | |||
| September 15, 2020 | September 18, 2020 | |||
| Comparison of NMDA datastores | Comparison of NMDA datastores | |||
| draft-ietf-netmod-nmda-diff-05 | draft-ietf-netmod-nmda-diff-06 | |||
| Abstract | Abstract | |||
| This document defines an RPC operation to compare management | This document defines an RPC operation to compare management | |||
| datastores that comply with the NMDA architecture. | datastores that comply with the NMDA architecture. | |||
| 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. | |||
| skipping to change at page 1, line 35 ¶ | skipping to change at page 1, line 35 ¶ | |||
| 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 March 19, 2021. | This Internet-Draft will expire on March 22, 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 | |||
| skipping to change at page 2, line 14 ¶ | skipping to change at page 2, line 14 ¶ | |||
| 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 | |||
| 2. Key Words . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Key Words . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Definitions and Acronyms . . . . . . . . . . . . . . . . . . 3 | 3. Definitions and Acronyms . . . . . . . . . . . . . . . . . . 3 | |||
| 4. Data Model Overview . . . . . . . . . . . . . . . . . . . . . 4 | 4. Data Model Overview . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 5. YANG Data Model . . . . . . . . . . . . . . . . . . . . . . . 6 | 5. YANG Data Model . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 6. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 6. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 7. Performance Considerations . . . . . . . . . . . . . . . . . 13 | 7. Performance Considerations . . . . . . . . . . . . . . . . . 14 | |||
| 8. Possible Future Extensions . . . . . . . . . . . . . . . . . 14 | 8. Possible Future Extensions . . . . . . . . . . . . . . . . . 15 | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 9.1. Updates to the IETF XML Registry . . . . . . . . . . . . 14 | 9.1. Updates to the IETF XML Registry . . . . . . . . . . . . 15 | |||
| 9.2. Updates to the YANG Module Names Registry . . . . . . . . 14 | 9.2. Updates to the YANG Module Names Registry . . . . . . . . 15 | |||
| 10. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 16 | |||
| 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 15 | 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 16 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 17 | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 17 | 12.2. Informative References . . . . . . . . . . . . . . . . . 18 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 1. Introduction | 1. Introduction | |||
| The revised Network Management Datastore Architecture (NMDA) | The revised Network Management Datastore Architecture (NMDA) | |||
| [RFC8342] introduces a set of new datastores that each hold YANG- | [RFC8342] introduces a set of new datastores that each hold YANG- | |||
| defined data [RFC7950] and represent a different "viewpoint" on the | defined data [RFC7950] and represent a different "viewpoint" on the | |||
| data that is maintained by a server. New YANG datastores that are | data that is maintained by a server. New YANG datastores that are | |||
| introduced include <intended>, which contains validated configuration | introduced include <intended>, which contains validated configuration | |||
| data that a client application intends to be in effect, and | data that a client application intends to be in effect, and | |||
| <operational>, which contains at least conceptually operational state | <operational>, which contains at least conceptually operational state | |||
| skipping to change at page 5, line 7 ¶ | skipping to change at page 5, line 7 ¶ | |||
| o exclude-origin: When set, this parameter indicates that origin | o exclude-origin: When set, this parameter indicates that origin | |||
| metadata should not not be included as part of RPC output. When | metadata should not not be included as part of RPC output. When | |||
| this parameter is omitted, origin metadata in comparisons that | this parameter is omitted, origin metadata in comparisons that | |||
| involve <operational> is by default included. | involve <operational> is by default included. | |||
| The operation provides the following output parameter: | The operation provides the following output parameter: | |||
| o differences: This parameter contains the list of differences. | o differences: This parameter contains the list of differences. | |||
| Those differences are encoded per YANG-Patch data model defined in | Those differences are encoded per YANG-Patch data model defined in | |||
| RFC8072. The YANG-Patch data model is augmented to indicate the | RFC8072. When a datastore node in the source of the comparison is | |||
| value of source datastore nodes in addition to the patch itself | not present in the target of the comparison, this can be indicated | |||
| that would need to be applied to the source to produce the target. | either as a "delete" or as a "remove" in the patch as there is no | |||
| When the target datastore is <operational>, "origin" metadata is | differentiation between those operations for the purposes of the | |||
| included as part of the patch. Including origin metadata can help | comparison. The YANG-Patch data model is augmented to indicate | |||
| in some cases explain the cause of a difference, for example when | the value of source datastore nodes in addition to the patch | |||
| a data node is part of <intended> but the origin of the same data | itself that would need to be applied to the source to produce the | |||
| node in <operational> is reported as "system". | target. When the target datastore is <operational>, "origin" | |||
| metadata is included as part of the patch. Including origin | ||||
| metadata can help in some cases explain the cause of a difference, | ||||
| for example when a data node is part of <intended> but the origin | ||||
| of the same data node in <operational> is reported as "system". | ||||
| The data model is defined in the ietf-nmda-compare YANG module. Its | The data model is defined in the ietf-nmda-compare YANG module. Its | |||
| structure is shown in the following figure. The notation syntax | structure is shown in the following figure. The notation syntax | |||
| follows [RFC8340]. | follows [RFC8340]. | |||
| module: ietf-nmda-compare | module: ietf-nmda-compare | |||
| rpcs: | rpcs: | |||
| +---x compare | +---x compare | |||
| +---w input | +---w input | |||
| | +---w source identityref | | +---w source identityref | |||
| skipping to change at page 6, line 7 ¶ | skipping to change at page 6, line 40 ¶ | |||
| +--ro target target-resource-offset | +--ro target target-resource-offset | |||
| +--ro point? target-resource-offset | +--ro point? target-resource-offset | |||
| +--ro where? enumeration | +--ro where? enumeration | |||
| +--ro value? | +--ro value? | |||
| +--ro source-value? | +--ro source-value? | |||
| Structure of ietf-nmda-compare | Structure of ietf-nmda-compare | |||
| 5. YANG Data Model | 5. YANG Data Model | |||
| <CODE BEGINS> file "ietf-nmda-compare@2020-09-15.yang" | <CODE BEGINS> file "ietf-nmda-compare@2020-09-18.yang" | |||
| module ietf-nmda-compare { | module ietf-nmda-compare { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-nmda-compare"; | namespace "urn:ietf:params:xml:ns:yang:ietf-nmda-compare"; | |||
| prefix cmp; | prefix cmp; | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| prefix yang; | prefix yang; | |||
| reference "RFC 6991: Common YANG Data Types"; | reference "RFC 6991: Common YANG Data Types"; | |||
| skipping to change at page 7, line 11 ¶ | skipping to change at page 7, line 44 ¶ | |||
| description | description | |||
| "The YANG data model defines a new operation, <compare>, that | "The YANG data model defines a new operation, <compare>, that | |||
| can be used to compare NMDA datastores. | can be used to compare NMDA datastores. | |||
| 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. | |||
| Copyright (c) 2019 IETF Trust and the persons identified as | Copyright (c) 2020 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
| the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
| forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; see the | This version of this YANG module is part of RFC XXXX; see the | |||
| RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
| revision 2020-09-15 { | revision 2020-09-18 { | |||
| description | description | |||
| "Initial revision"; | "Initial revision"; | |||
| reference | reference | |||
| "RFC XXXX: Comparison of NMDA datastores"; | "RFC XXXX: Comparison of NMDA datastores"; | |||
| } | } | |||
| /* RPC */ | /* RPC */ | |||
| rpc compare { | rpc compare { | |||
| description | description | |||
| "NMDA compare operation."; | "NMDA compare operation."; | |||
| skipping to change at page 9, line 10 ¶ | skipping to change at page 9, line 44 ¶ | |||
| "Comparison results."; | "Comparison results."; | |||
| leaf no-matches { | leaf no-matches { | |||
| type empty; | type empty; | |||
| description | description | |||
| "This leaf indicates that the filter did not match | "This leaf indicates that the filter did not match | |||
| anything and nothing was compared."; | anything and nothing was compared."; | |||
| } | } | |||
| container differences { | container differences { | |||
| description | description | |||
| "The list of differences, encoded per RFC8072 with an | "The list of differences, encoded per RFC8072 with an | |||
| augmentation to include source values where | augmentation to include source values where applicable. | |||
| applicable."; | When a datastore node in the source is not present in | |||
| the target, this can be indicated either as a 'delete' | ||||
| or as a 'remove' as there is no difference between | ||||
| them for the purposes of the comparison."; | ||||
| uses ypatch:yang-patch { | uses ypatch:yang-patch { | |||
| augment "yang-patch/edit" { | augment "yang-patch/edit" { | |||
| description | description | |||
| "Provide the value of the source of the patch, | "Provide the value of the source of the patch, | |||
| respectively of the comparison, in addition to | respectively of the comparison, in addition to | |||
| the target value, where applicable."; | the target value, where applicable."; | |||
| anydata source-value { | anydata source-value { | |||
| when "../operation = 'delete'" | when "../operation = 'delete'" | |||
| + "or ../operation = 'merge'" | + "or ../operation = 'merge'" | |||
| + "or ../operation = 'move'" | + "or ../operation = 'move'" | |||
| End of changes. 10 change blocks. | ||||
| 29 lines changed or deleted | 36 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/ | ||||