RESTCONF Client and Server ModelsWatsen Networkskent+ietf@watsen.net
Operations
NETCONF Working GroupThis document defines two YANG modules,
one module to configure a RESTCONF client and the other module to
configure a RESTCONF server. Both modules support the TLS transport
protocol with both standard RESTCONF and RESTCONF Call Home connections.This draft contains many placeholder values that need to be replaced
with finalized values at the time of publication. This note summarizes
all of the substitutions that are needed. No other RFC Editor
instructions are specified elsewhere in this document.This document contains references to other drafts in progress, both in
the Normative References section, as well as in body text throughout.
Please update the following references to reflect their final RFC assignments:
I-D.ietf-netconf-keystoreI-D.ietf-netconf-tcp-client-serverI-D.ietf-netconf-tls-client-serverI-D.ietf-netconf-http-client-serverArtwork in this document contains shorthand references to drafts in
progress. Please apply the following replacements:
XXXX --> the assigned RFC value for this draftAAAA --> the assigned RFC value for I-D.ietf-netconf-tcp-client-serverBBBB --> the assigned RFC value for I-D.ietf-netconf-tls-client-serverCCCC --> the assigned RFC value for I-D.ietf-netconf-http-client-serverArtwork in this document contains placeholder values for the date of publication of this
draft. Please apply the following replacement:
2019-04-07 --> the publication date of this draftThe following Appendix section is to be removed prior to publication:
. Change LogThis document defines two YANG modules,
one module to configure a RESTCONF client and the other module to
configure a RESTCONF server .
Both modules support the TLS transport
protocol with both standard RESTCONF and RESTCONF Call Home connections
.The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14
when, and only when, they appear in all capitals, as shown here.The RESTCONF client model presented in this section supports
both clients initiating connections to servers, as well as
clients listening for connections from servers calling home.YANG feature statements are used to enable implementations to
advertise which potentially uncommon parts of the model the
RESTCONF client supports.The following tree diagram provides an
overview of the data model for the "ietf-restconf-client" module.This tree diagram only shows the nodes defined in this module; it does
show the nodes defined by "grouping" statements used by this module.Please see for a tree
diagram that illustrates what the module looks like with all the
"grouping" statements expanded.The following example illustrates configuring a RESTCONF
client to initiate connections, as well as listening for call-home
connections.This example is consistent with the examples presented in
Section 2 of
and Section 3.2 of .This YANG module has normative references to ,
, and ,
,
, and
.The RESTCONF server model presented in this section supports
both listening for connections as well as initiating call-home
connections.YANG feature statements are used to enable implementations to
advertise which potentially uncommon parts of the model the
RESTCONF server supports.The following tree diagram provides an
overview of the data model for the "ietf-restconf-server" module.This tree diagram only shows the nodes defined in this module; it does
show the nodes defined by "grouping" statements used by this module.Please see for a tree
diagram that illustrates what the module looks like with all the
"grouping" statements expanded.The following example illustrates configuring a RESTCONF server
to listen for RESTCONF client connections, as well as configuring
call-home to one RESTCONF client.This example is consistent with the examples presented in
Section 2 of
and Section 3.2 of .This YANG module has normative references to ,
, , ,
,
, and
.The YANG module defined in this document uses groupings defined in
,
, and
. Please
see the Security Considerations section in those documents for
concerns related those groupings.The YANG modules defined in this document are designed to be accessed
via YANG based management protocols, such as NETCONF
and RESTCONF . Both of these protocols have
mandatory-to-implement secure transport layers (e.g., SSH, TLS) with
mutual authentication.The NETCONF access control model (NACM)
provides the means to restrict access for particular users to a
pre-configured subset of all available protocol operations and content.There are a number of data nodes defined in the YANG modules that are
writable/creatable/deletable (i.e., config true, which is the default).
Some of these data nodes may be considered sensitive or vulnerable in
some network environments. Write operations (e.g., edit-config) to
these data nodes without proper protection can have a negative effect
on network operations. These are the subtrees and data nodes and their
sensitivity/vulnerability:
Some of the readable data nodes in the YANG modules may be considered
sensitive or vulnerable in some network environments. It is thus
important to control read access (e.g., via get, get-config, or
notification) to these data nodes. These are the subtrees and data
nodes and their sensitivity/vulnerability:
Some of the RPC operations in the YANG modules may be considered
sensitive or vulnerable in some network environments. It is thus
important to control access to these operations. These are the
operations and their sensitivity/vulnerability:
This document registers two URIs in the "ns" subregistry of the IETF XML
Registry . Following the format in
, the following registrations are
requested:This document registers two YANG modules in the
YANG Module Names registry .
Following the format in , the
the following registrations are requested:The following tree diagram provides an
overview of the data model for the "ietf-restconf-client" module.This tree diagram shows all the nodes defined in this module,
including those defined by "grouping" statements used by this module.Please see for a tree
diagram that illustrates what the module looks like without
all the "grouping" statements expanded.The following tree diagram provides an
overview of the data model for the "ietf-restconf-server" module.This tree diagram shows all the nodes defined in this module,
including those defined by "grouping" statements used by this module.Please see for a tree
diagram that illustrates what the module looks like without
all the "grouping" statements expanded.Renamed "keychain" to "keystore".Filled in previously missing 'ietf-restconf-client' module.Updated the ietf-restconf-server module to accommodate new
grouping 'ietf-tls-server-grouping'.Refined use of tls-client-grouping to add a must statement
indicating that the TLS client must specify a client-certificate.Changed restconf-client??? to be a grouping (not a container).Added RFC 8174 to Requirements Language Section.Replaced refine statement in ietf-restconf-client
to add a mandatory true.Added refine statement in ietf-restconf-server
to add a must statement.Now there are containers and groupings, for both the
client and server models.Now tree diagrams reference ietf-netmod-yang-tree-diagramsUpdated examples to inline key and certificates (no longer
a leafref to keystore)Now tree diagrams reference ietf-netmod-yang-tree-diagramsUpdated examples to inline key and certificates (no longer
a leafref to keystore)Fixed change log missing section issue.Updated examples to match latest updates to the crypto-types,
trust-anchors, and keystore drafts.Reduced line length of the YANG modules to fit within 69 columns.removed "idle-timeout" from "persistent" connection config.Added "random-selection" for reconnection-strategy's "starts-with" enum.Replaced "connection-type" choice default (persistent) with "mandatory true".Reduced the periodic-connection's "idle-timeout" from 5 to 2 minutes.Replaced reconnect-timeout with period/anchor-time combo.Modified examples to be compatible with new crypto-types algsCorrected use of "mandatory true" for "address" leafs.Updated examples to reflect update to groupings defined in the keystore draft.Updated to use groupings defined in new TCP and HTTP drafts.Updated copyright date, boilerplate template, affiliation, and folding algorithm.Reformatted YANG modules.Adjusted for the top-level "demux container" added to groupings
imported from other modules.Added "must" expressions to ensure that keepalives are not configured
for "periodic" connections.Updated the boilerplate text in module-level "description" statement
to match copyeditor convention.Moved "expanded" tree diagrams to the Appendix.The authors would like to thank for following for
lively discussions on list and in the halls (ordered
by last name): Andy Bierman, Martin Bjorklund, Benoit Claise, Ramkumar Dhanapal,
Mehmet Ersue, Balázs Kovács, David Lamparter, Alan Luchuk, Ladislav Lhotka,
Radek Krejci, Tom Petch, Juergen Schoenwaelder, Phil Shafer, Sean Turner, and
Bert Wijnen.