draft-ietf-netmod-nmda-diff-04.txt | draft-ietf-netmod-nmda-diff-05.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: January 14, 2021 J. Tantsura | Expires: March 19, 2021 J. Tantsura | |||
Apstra | Apstra | |||
A. Bierman | A. Bierman | |||
YumaWorks | YumaWorks | |||
July 13, 2020 | September 15, 2020 | |||
Comparison of NMDA datastores | Comparison of NMDA datastores | |||
draft-ietf-netmod-nmda-diff-04 | draft-ietf-netmod-nmda-diff-05 | |||
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 January 14, 2021. | This Internet-Draft will expire on March 19, 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 19 ¶ | skipping to change at page 2, line 19 ¶ | |||
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 . . . . . . . . . . . . . . . . . 13 | 7. Performance Considerations . . . . . . . . . . . . . . . . . 13 | |||
8. Possible Future Extensions . . . . . . . . . . . . . . . . . 14 | 8. Possible Future Extensions . . . . . . . . . . . . . . . . . 14 | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | |||
9.1. Updates to the IETF XML Registry . . . . . . . . . . . . 14 | 9.1. Updates to the IETF XML Registry . . . . . . . . . . . . 14 | |||
9.2. Updates to the YANG Module Names Registry . . . . . . . . 15 | 9.2. Updates to the YANG Module Names Registry . . . . . . . . 14 | |||
10. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | |||
11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 16 | 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 16 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
12.1. Normative References . . . . . . . . . . . . . . . . . . 16 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 16 | |||
12.2. Informative References . . . . . . . . . . . . . . . . . 17 | 12.2. Informative References . . . . . . . . . . . . . . . . . 17 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17 | 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 | |||
skipping to change at page 6, line 7 ¶ | skipping to change at page 6, line 7 ¶ | |||
+--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@2019-11-04.yang" | <CODE BEGINS> file "ietf-nmda-compare@2020-09-15.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 cp; | prefix cmp; | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix yang; | prefix yang; | |||
reference "RFC 6991: Common YANG Data Types"; | ||||
} | } | |||
import ietf-datastores { | import ietf-datastores { | |||
prefix ds; | prefix ds; | |||
reference "RFC 8342: Network Management Datastore | ||||
Architecture (NMDA)"; | ||||
} | } | |||
import ietf-yang-patch { | import ietf-yang-patch { | |||
prefix ypatch; | prefix ypatch; | |||
reference "RFC 8072: YANG Patch Media Type"; | ||||
} | } | |||
import ietf-netconf { | import ietf-netconf { | |||
prefix nc; | prefix nc; | |||
reference "RFC6241: Network Configuration Protocol (NETCONF)"; | ||||
} | } | |||
organization "IETF"; | organization "IETF"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/netconf/> | "WG Web: <http://tools.ietf.org/wg/netconf/> | |||
WG List: <mailto:netconf@ietf.org> | WG List: <mailto:netconf@ietf.org> | |||
Author: Alexander Clemm | Author: Alexander Clemm | |||
<mailto:ludwig@clemm.org> | <mailto:ludwig@clemm.org> | |||
skipping to change at page 7, line 19 ¶ | skipping to change at page 7, line 24 ¶ | |||
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 2019-11-04 { | revision 2020-09-15 { | |||
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 8, line 37 ¶ | skipping to change at page 8, line 41 ¶ | |||
target datastore to retrieve."; | target datastore to retrieve."; | |||
reference "RFC 6241, Section 6."; | reference "RFC 6241, Section 6."; | |||
} | } | |||
leaf xpath-filter { | leaf xpath-filter { | |||
if-feature nc:xpath; | if-feature nc:xpath; | |||
type yang:xpath1.0; | type yang:xpath1.0; | |||
description | description | |||
"This parameter contains an XPath expression | "This parameter contains an XPath expression | |||
identifying the portions of the target | identifying the portions of the target | |||
datastore to retrieve."; | datastore to retrieve."; | |||
reference "RFC 6021: Common YANG Data Types"; | ||||
} | } | |||
} | } | |||
} | } | |||
output { | output { | |||
choice compare-response { | choice compare-response { | |||
description | description | |||
"Comparison results."; | "Comparison results."; | |||
leaf no-matches { | leaf no-matches { | |||
type empty; | type empty; | |||
description | description | |||
skipping to change at page 9, line 24 ¶ | skipping to change at page 9, line 29 ¶ | |||
when "../operation = 'delete'" | when "../operation = 'delete'" | |||
+ "or ../operation = 'merge'" | + "or ../operation = 'merge'" | |||
+ "or ../operation = 'move'" | + "or ../operation = 'move'" | |||
+ "or ../operation = 'replace'" | + "or ../operation = 'replace'" | |||
+ "or ../operation = 'remove'"; | + "or ../operation = 'remove'"; | |||
description | description | |||
"The anydata 'value' is only used for 'delete', | "The anydata 'value' is only used for 'delete', | |||
'move', 'merge', 'replace', and 'remove' | 'move', 'merge', 'replace', and 'remove' | |||
operations."; | operations."; | |||
} | } | |||
reference "RFC 8072: YANG Patch Media Type"; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
<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 "interfaces". The subtree | and <intended> for a subtree under "interfaces". The subtree | |||
contains objects that are defined in a YANG data model for the | contains a subset of objects that are defined in a YANG data model | |||
management of interfaces defined in [RFC8343]. The excerpt of the | for the management of interfaces defined in [RFC8343]. The excerpt | |||
data model whose instantiation is basis of the comparison is as | of the data model whose instantiation is basis of the comparison is | |||
follows: | as follows: | |||
container interfaces { | container interfaces { | |||
description | description | |||
"Interface parameters."; | "Interface parameters."; | |||
list interface { | list interface { | |||
key "name"; | key "name"; | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"The name of the interface". | "The name of the interface". | |||
skipping to change at page 10, line 32 ¶ | skipping to change at page 10, line 32 ¶ | |||
default "true"; | default "true"; | |||
description | description | |||
"This leaf contains the configured, desired state of the | "This leaf contains the configured, desired state of the | |||
interface.";" | interface.";" | |||
} | } | |||
} | } | |||
} | } | |||
The contents of <intended> and <operational> datastores: | The contents of <intended> and <operational> datastores: | |||
<interfaces xmlns:or="urn:ietf:params:xml:ns:yang:ietf-origin" | //INTENDED | |||
or:origin="or:intended"> | <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> | |||
<interface> | <interface> | |||
<name>eth0</name> | <name>eth0</name> | |||
<enabled>false</enabled> | <enabled>false</enabled> | |||
<description>ip interface</description> | <description>ip interface</description> | |||
</interface> | </interface> | |||
</interfa | </interfaces> | |||
<interfaces xmlns:or="urn:ietf:params:xml:ns:yang:ietf-origin" | ||||
or:origin="or:operational"> | //OPERATIONAL | |||
<interface> | <interfaces | |||
xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces" | ||||
xmlns:or="urn:ietf:params:xml:ns:yang:ietf-origin"> | ||||
<interface or:origin="or:learned"> | ||||
<name>eth0</name> | <name>eth0</name> | |||
<enabled>true</enabled> | <enabled>true</enabled> | |||
</interface> | ||||
</interfaces> | ||||
<operational> contains one object that was not contained in | </interface> | |||
<intended>, "preference". Another object, "explicit-router-id", has | </interfaces> | |||
differences in values. A third object, "enable", is the same in both | <operational> does not contain object "description" that is contained | |||
cases. | in <intended>. Another object, "enabled", has differences in values, | |||
being "true" in <operational> and "false" in <intended>. A third | ||||
object, "name", is the same in both cases. The origin of the objects | ||||
in <operational> is "learned", which may help explain the | ||||
discrepancies. | ||||
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:if="urn:ietf:params:xml:ns:yang:ietf-interfaces">\ | xmlns:if="urn:ietf:params:xml:ns:yang:ietf-interfaces"> | |||
/if:interfaces\ | /if:interfaces | |||
</xpath-filter> | </xpath-filter> | |||
</compare> | </compare> | |||
</rpc> | </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>interface status</patch-id> | <patch-id>interface status</patch-id> | |||
<comment>diff between operational and intended</comment> | <comment> | |||
diff between operational (source) and intended (target) | ||||
</comment> | ||||
<edit> | <edit> | |||
<edit-id>1</edit-id> | <edit-id>1</edit-id> | |||
<operation>replace</operation> | <operation>replace</operation> | |||
<target>/ietf-interfaces:interface=eth0/enabled</target> | <target>/ietf-interfaces:interface=eth0/enabled</target> | |||
<value> | <value> | |||
<if:enabled | <if:enabled>false<if:enabled> | |||
or:origin="or:system">true<enabled> | ||||
</value> | </value> | |||
<source-value> | <source-value> | |||
<if:enabled | <if:enabled or:origin="or:learned">true</if:enabled> | |||
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-interfaces:interface=eth0/description</target> | <target>/ietf-interfaces:interface=eth0/description</target> | |||
<value> | <value> | |||
<if:description | <if:description>ip interface<description> | |||
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-d | 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-interfaces:interfaces" | |||
} | } | |||
} | } | |||
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-d | 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" : "interface status", | |||
"comment" : "diff between operational and intended", | "comment" : "diff between intended (source) and operational", | |||
"edit" : [ | "edit" : [ | |||
{ | { | |||
"edit-id" : "1", | "edit-id" : "1", | |||
"operation" : "replace", | "operation" : "replace", | |||
"target" : "/ietf-interfaces:interface=eth0/enabled", | "target" : "/ietf-interfaces:interface=eth0/enabled", | |||
"value" : { | "value" : { | |||
"ietf-interfaces:interface/enabled" : "true" | ||||
"@ietf-interfaces:interface/enabled" : { | ||||
"ietf-origin:origin" : "ietf-origin:system" | ||||
} | ||||
"source-value" : { | ||||
"ietf-interfaces:interface/enabled" : "false" | "ietf-interfaces:interface/enabled" : "false" | |||
}, | ||||
"source-value" : { | ||||
"ietf-interfaces:interface/enabled" : "true", | ||||
"@ietf-interfaces:interface/enabled" : { | "@ietf-interfaces:interface/enabled" : { | |||
"ietf-origin:origin" : "ietf-origin:intended" | "ietf-origin:origin" : "ietf-origin:learned" | |||
} | } | |||
} | ||||
"edit-id" : "2", | "edit-id" : "2", | |||
"operation" : "create", | "operation" : "create", | |||
"target" : "/ietf-interfaces:interface=eth0/description", | "target" : "/ietf-interfaces:interface=eth0/description", | |||
"value" : { | "value" : { | |||
"ietf-interface:interface/description" : "ip interface" | "ietf-interface:interface/description" : "ip interface" | |||
"@ietf-interface:interfaces/description" : { | } | |||
"ietf-origin:origin" : "ietf-origin:intended" | ||||
} | ||||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
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 | |||
number of requests that is served to a client in any one time | number of requests that is served to a client, or to any number of | |||
interval, rejecting requests made at a higher frequency than the | clients, in any one time interval, rejecting requests made at a | |||
implementation can reasonably sustain. | higher frequency than the implementation can reasonably sustain. | |||
8. Possible Future Extensions | 8. Possible Future Extensions | |||
It is conceivable to extend the compare operation with a number of | It is conceivable to extend the compare operation with a number of | |||
possible additional features in the future. | possible additional features in the future. | |||
Specifically, it is possible to define an extension with an optional | Specifically, it is possible to define an extension with an optional | |||
feature for dampening. This will allow clients to specify a minimum | feature for dampening. This will allow clients to specify a minimum | |||
time period for which a difference must persist for it to be | time period for which a difference must persist for it to be | |||
reported. This will enable clients to distinguish between | reported. This will enable clients to distinguish between | |||
skipping to change at page 15, line 12 ¶ | skipping to change at page 15, line 4 ¶ | |||
XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
9.2. Updates to the YANG Module Names Registry | 9.2. Updates to the YANG Module Names Registry | |||
This document registers a YANG module in the YANG Module Names | This document registers a YANG module in the YANG Module Names | |||
registry [RFC7950]. Following the format in [RFC7950], the following | registry [RFC7950]. Following the format in [RFC7950], the following | |||
registration is requested: | registration is requested: | |||
name: ietf-nmda-compare | name: ietf-nmda-compare | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-nmda-compare | namespace: urn:ietf:params:xml:ns:yang:ietf-nmda-compare | |||
prefix: cp | prefix: cmp | |||
reference: RFC XXXX | reference: RFC XXXX | |||
10. Security Considerations | 10. Security Considerations | |||
The YANG module specified in this document defines a schema for data | The YANG module specified in this document defines a schema for data | |||
that is designed to be accessed via network management protocols such | that is designed to be accessed via network management protocols such | |||
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
is the secure transport layer, and the mandatory-to-implement secure | is the secure transport layer, and the mandatory-to-implement secure | |||
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
skipping to change at page 16, line 8 ¶ | skipping to change at page 15, line 44 ¶ | |||
ways. For one, they can implement the NETCONF access control model | ways. For one, they can implement the NETCONF access control model | |||
in order to require proper authorization for requests to be made. | in order to require proper authorization for requests to be made. | |||
Second, server implementations can limit the number of requests that | Second, server implementations can limit the number of requests that | |||
they serve to a client in any one time interval, rejecting requests | they serve to a client in any one time interval, rejecting requests | |||
made at a higher frequency than the implementation can reasonably | made at a higher frequency than the implementation can reasonably | |||
sustain. | sustain. | |||
11. Acknowledgments | 11. Acknowledgments | |||
We thank Rob Wilton, Martin Bjorklund, Mahesh Jethanandani, Lou | We thank Rob Wilton, Martin Bjorklund, Mahesh Jethanandani, Lou | |||
Berger, Kent Watsen, Phil Shafer, Ladislav Lhotka, and Tim Carey for | Berger, Kent Watsen, Phil Shafer, Ladislav Lhotka, Tim Carey, and | |||
valuable feedback and suggestions. | Reshad Rahman for valuable feedback and suggestions. | |||
12. References | 12. References | |||
12.1. Normative References | 12.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[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 16, line 33 ¶ | skipping to change at page 16, line 24 ¶ | |||
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6241>. | <https://www.rfc-editor.org/info/rfc6241>. | |||
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6242>. | <https://www.rfc-editor.org/info/rfc6242>. | |||
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | ||||
RFC 6991, DOI 10.17487/RFC6991, July 2013, | ||||
<https://www.rfc-editor.org/info/rfc6991>. | ||||
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
RFC 7950, DOI 10.17487/RFC7950, August 2016, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
<https://www.rfc-editor.org/info/rfc7950>. | <https://www.rfc-editor.org/info/rfc7950>. | |||
[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>. | |||
[RFC8072] Bierman, A., Bjorklund, M., and K. Watsen, "YANG Patch | [RFC8072] Bierman, A., Bjorklund, M., and K. Watsen, "YANG Patch | |||
Media Type", RFC 8072, DOI 10.17487/RFC8072, February | Media Type", RFC 8072, DOI 10.17487/RFC8072, February | |||
End of changes. 39 change blocks. | ||||
56 lines changed or deleted | 66 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/ |