< draft-ietf-netmod-nmda-diff-03.txt   draft-ietf-netmod-nmda-diff-04.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: May 7, 2020 J. Tantsura Expires: January 14, 2021 J. Tantsura
Apstra Apstra
A. Bierman A. Bierman
YumaWorks YumaWorks
November 4, 2019 July 13, 2020
Comparison of NMDA datastores Comparison of NMDA datastores
draft-ietf-netmod-nmda-diff-03 draft-ietf-netmod-nmda-diff-04
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 May 7, 2020. This Internet-Draft will expire on January 14, 2021.
Copyright Notice Copyright Notice
Copyright (c) 2019 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 . . . . . . . . . . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
7. Performance Considerations . . . . . . . . . . . . . . . . . 12 7. Performance Considerations . . . . . . . . . . . . . . . . . 13
8. Possible Future Extensions . . . . . . . . . . . . . . . . . 13 8. Possible Future Extensions . . . . . . . . . . . . . . . . . 14
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14
9.1. Updates to the IETF XML Registry . . . . . . . . . . . . 13 9.1. Updates to the IETF XML Registry . . . . . . . . . . . . 14
9.2. Updates to the YANG Module Names Registry . . . . . . . . 14 9.2. Updates to the YANG Module Names Registry . . . . . . . . 15
10. Security Considerations . . . . . . . . . . . . . . . . . . . 14 10. Security Considerations . . . . . . . . . . . . . . . . . . . 15
11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 15 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 16
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 16
12.1. Normative References . . . . . . . . . . . . . . . . . . 15 12.1. Normative References . . . . . . . . . . . . . . . . . . 16
12.2. Informative References . . . . . . . . . . . . . . . . . 16 12.2. Informative References . . . . . . . . . . . . . . . . . 17
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17
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 9, line 36 skipping to change at page 9, line 36
} }
} }
} }
} }
} }
<CODE ENDS> <CODE ENDS>
6. Example 6. Example
The following example compares the difference between <operational> The following example compares the difference between <operational>
and <intended> for a subtree under "ospf". The subtree contains and <intended> for a subtree under "interfaces". The subtree
objects that are defined in a YANG data model for the management of contains objects that are defined in a YANG data model for the
OSPF defined in [I-D.ietf-ospf-yang]. The excerpt of the data model management of interfaces defined in [RFC8343]. The excerpt of the
whose instantiation is basis of the comparison is as follows: data model whose instantiation is basis of the comparison is as
follows:
container ospf { container interfaces {
leaf enable { description
type boolean; "Interface parameters.";
} list interface {
leaf explicit-router-id { key "name";
type rt-types:router-id; leaf name {
} type string;
leaf preference { description
type uint8; "The name of the interface".
}
leaf description {
type string;
description
"A textual description of the interface.";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.";"
}
} }
} }
The contents of <intended> and <operational> datastores:
<ospf xmlns:or="urn:ietf:params:xml:ns:yang:ietf-origin" The contents of <intended> and <operational> datastores:
or:origin="or:intended">
<enable>true</enable>
<explicit-router-id>2.2.2.2</explicit-router-id>
</ospf>
<ospf xmlns:or="urn:ietf:params:xml:ns:yang:ietf-origin" <interfaces xmlns:or="urn:ietf:params:xml:ns:yang:ietf-origin"
or:origin="or:operational"> or:origin="or:intended">
<enable>true</enable> <interface>
<explicit-router-id>1.1.1.1</explicit-router-id> <name>eth0</name>
<preference>200</preference> <enabled>false</enabled>
</ospf> <description>ip interface</description>
</interface>
</interfa
<interfaces xmlns:or="urn:ietf:params:xml:ns:yang:ietf-origin"
or:origin="or:operational">
<interface>
<name>eth0</name>
<enabled>true</enabled>
</interface>
</interfaces>
<operational> contains one object that was not contained in <operational> contains one object that was not contained in
<intended>, "preference". Another object, "explicit-router-id", has <intended>, "preference". Another object, "explicit-router-id", has
differences in values. A third object, "enable", is the same in both differences in values. A third object, "enable", is the same in both
cases. cases.
RPC request to compare <operational< (source of the comparison) with RPC request to compare <operational< (source of the comparison) with
<intended>(target of the comparison): <intended>(target of the comparison):
<rpc message-id="101" <rpc message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<compare xmlns="urn:ietf:params:xml:ns:yang:ietf-nmda-compare" <compare xmlns="urn:ietf:params:xml:ns:yang:ietf-nmda-compare"
xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores"> xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores">
<source>ds:operational</source> <source>ds:operational</source>
<target>ds:intended</target> <target>ds:intended</target>
<xpath-filter <xpath-filter
xmlns:rt="urn:ietf:params:xml:ns:yang:ietf-routing" xmlns:if="urn:ietf:params:xml:ns:yang:ietf-interfaces">\
xmlns:ospf="urn:ietf:params:xml:ns:yang:ietf-ospf">\ /if:interfaces\
/rt:routing/rt:control-plane-protocols\ </xpath-filter>
/rt:control-plane-protocol/ospf:ospf\ </compare>
</xpath-filter> </rpc>
</compare>
</rpc>
RPC reply, when a difference is detected: RPC reply, when a difference is detected:
<rpc-reply <rpc-reply
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"
message-id="101"> message-id="101">
<differences <differences
xmlns="urn:ietf:params:xml:ns:yang:ietf-nmda-compare" xmlns="urn:ietf:params:xml:ns:yang:ietf-nmda-compare"
xmlns:or="urn:ietf:params:xml:ns:yang:ietf-origin"> xmlns:or="urn:ietf:params:xml:ns:yang:ietf-origin">
<yang-patch> <yang-patch>
<patch-id>ospf router-id</patch-id> <patch-id>interface status</patch-id>
<comment>diff between operational and intended</comment> <comment>diff between operational and intended</comment>
<edit> <edit>
<edit-id>1</edit-id> <edit-id>1</edit-id>
<operation>replace</operation> <operation>replace</operation>
<target>/ietf-ospf:explicit-router-id</target> <target>/ietf-interfaces:interface=eth0/enabled</target>
<value> <value>
<ospf:explicit-router-id <if:enabled
or:origin="or:system">1.1.1.1<explicit-router-id> or:origin="or:system">true<enabled>
</value> </value>
<source-value> <source-value>
<ospf:explicit-router-id <if:enabled
or:origin="or:intended">2.2.2.2<explicit-router-id> or:origin="or:intended">false<enabled>
</source-value> </source-value>
<edit-id>2</edit-id> <edit-id>2</edit-id>
<operation>create</operation> <operation>create</operation>
<target>/ietf-ospf:preference</target> <target>/ietf-interfaces:interface=eth0/description</target>
<value> <value>
<ospf:preference <if:description
or:origin="or:system">200<preference> or:origin="or:system">ip interface<description>
</value> </value>
</edit> </edit>
</yang-patch> </yang-patch>
</differences> </differences>
</rpc-reply> </rpc-reply>
The same request in RESTCONF (using JSON format): The same request in RESTCONF (using JSON format):
POST /restconf/operations/ietf-nmda-compare:compare HTTP/1.1 POST /restconf/operations/ietf-nmda-compare:compare HTTP/1.1
Host: example.com Host: example.com
Content-Type: application/yang-data+json Content-Type: application/yang-data+json
Accept: application/yang-data+json Accept: application/yang-d
{ "ietf-nmda-compare:input" {
{ "ietf-nmda-compare:input" { "source" : "ietf-datastores:operational",
"source" : "ietf-datastores:operational", "target" : "ietf-datastores:intended".
"target" : "ietf-datastores:intended". "xpath-filter" : \
"xpath-filter" : \ "/ietf-interfaces:interfaces"
"/ietf-routing:routing/control-plane-protocols\ }
/control-plane-protocol/ietf-ospf:ospf" }
}
}
The same response in RESTCONF (using JSON format): The same response in RESTCONF (using JSON format):
HTTP/1.1 200 OK HTTP/1.1 200 OK
Date: Thu, 26 Jan 2019 20:56:30 GMT Date: Thu, 26 Jan 2019 20:56:30 GMT
Server: example-server Server: example-server
Content-Type: application/yang-data+json Content-Type: application/yang-d
{ "ietf-nmda-compare:output" : {
{ "ietf-nmda-compare:output" : { "differences" : {
"differences" : { "ietf-yang-patch:yang-patch" : {
"ietf-yang-patch:yang-patch" : { "patch-id" : "interface status",
"patch-id" : "ospf router-id", "comment" : "diff between operational and intended",
"comment" : "diff between operational and intended", "edit" : [
"edit" : [ {
{ "edit-id" : "1",
"edit-id" : "1", "operation" : "replace",
"operation" : "replace", "target" : "/ietf-interfaces:interface=eth0/enabled",
"target" : "/ietf-ospf:explicit-router-id", "value" : {
"value" : { "ietf-interfaces:interface/enabled" : "true"
"ietf-ospf:explicit-router-id" : "1.1.1.1" "@ietf-interfaces:interface/enabled" : {
"@ietf-ospf:explicit-router-id" : { "ietf-origin:origin" : "ietf-origin:system"
"ietf-origin:origin" : "ietf-origin:system" }
} "source-value" : {
"source-value" : { "ietf-interfaces:interface/enabled" : "false"
"ietf-ospf:explicit-router-id" : "2.2.2.2" "@ietf-interfaces:interface/enabled" : {
"@ietf-ospf:explicit-router-id" : { "ietf-origin:origin" : "ietf-origin:intended"
"ietf-origin:origin" : "ietf-origin:intended" }
} "edit-id" : "2",
"edit-id" : "2", "operation" : "create",
"operation" : "create", "target" : "/ietf-interfaces:interface=eth0/description",
"target" : "/ietf-ospf:preference", "value" : {
"value" : { "ietf-interface:interface/description" : "ip interface"
"ietf-ospf:preference" : "200" "@ietf-interface:interfaces/description" : {
"@ietf-ospf:preference" : { "ietf-origin:origin" : "ietf-origin:intended"
"ietf-origin:origin" : "ietf-origin:system" }
} }
} ]
] }
} }
} }
} }
}
7. Performance Considerations 7. Performance Considerations
The compare operation can be computationally expensive. While The compare operation can be computationally expensive. While
responsible client applications are expected to use the operation responsible client applications are expected to use the operation
responsibly and sparingly only when warranted, implementations need responsibly and sparingly only when warranted, implementations need
to be aware of the fact that excessive invocation of this operation to be aware of the fact that excessive invocation of this operation
will burden system resources and need to ensure that system will burden system resources and need to ensure that system
performance will not be adversely impacted. One possibility for an performance will not be adversely impacted. One possibility for an
implementation to mitigate against such a possibility is to limit the implementation to mitigate against such a possibility is to limit the
skipping to change at page 16, line 21 skipping to change at page 17, line 21
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>.
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/info/rfc8446>. <https://www.rfc-editor.org/info/rfc8446>.
12.2. Informative References 12.2. Informative References
[I-D.ietf-ospf-yang] [RFC8343] Bjorklund, M., "A YANG Data Model for Interface
Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, Management", RFC 8343, DOI 10.17487/RFC8343, March 2018,
"YANG Data Model for OSPF Protocol", draft-ietf-ospf- <https://www.rfc-editor.org/info/rfc8343>.
yang-29 (work in progress), October 2019.
Authors' Addresses Authors' Addresses
Alexander Clemm Alexander Clemm
Futurewei Futurewei
2330 Central Expressway 2330 Central Expressway
Santa Clara, CA 95050 Santa Clara, CA 95050
USA USA
Email: ludwig@clemm.org Email: ludwig@clemm.org
 End of changes. 16 change blocks. 
143 lines changed or deleted 155 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/